1 #include<stdio.h>
2 #include<stdlib.h>
3 #define TRUE 1
4 #define FALSE 0
5 #define ERROR 0
6 #define OK 1
7 #define OVERFLOW -2
8 #define MAXQSIZE 100
9 #define LEN sizeof(QElemType)
10 typedef int Status;
11 typedef int QElemType;
12 typedef struct
13 {
14 QElemType *base;
15 int front;
16 int rear;
17 }SqQueue;
18 Status InitQueue(SqQueue &Q)//创建一个队列.
19 {
20 Q.base=(QElemType *)malloc(LEN);
21 if(!Q.base) exit(FALSE);
22 Q.front=Q.rear=0;
23 return OK;
24 }
25 int QueueLength(SqQueue Q)
26 {
27 return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;
28 }
29 Status EnQueue(SqQueue &Q,QElemType e)//插入函数,用于在队尾插入数据e
30 {
31 if((Q.rear+1)%MAXQSIZE==Q.front) return OVERFLOW;
32 Q.base[Q.rear]=e;
33 Q.rear=(Q.rear+1)%MAXQSIZE;
34 return OK;
35 }
36 Status DeQueue(SqQueue &Q,QElemType &e)//删除函数,删除队头元素,并把值赋予e
37 {
38 if(Q.front==Q.rear) return ERROR;
39 e=Q.base[Q.front];
40 Q.front=(Q.front+1)%MAXQSIZE;
41 return OK;
42 }
43 Status PrintQueue(SqQueue Q)//打印队列
44 {
45 QElemType e;
46 int n=QueueLength(Q);
47 printf("队列元素为:");
48 printf("\n********************\n");
49 while(n--)
50 {
51 DeQueue(Q,e);
52 printf("%d ",e);
53 }
54 printf("\n********************\n");
55 return OK;
56 }
57 Status ClearQueue(SqQueue &Q)//清空队列
58 {
59 Q.front=Q.rear=0;
60 return OK;
61 }
62 Status main()
63 {
64 SqQueue Q;
65 QElemType e;
66 InitQueue(Q);
67 int n;
68 puts("请输入队列的长度:");
69 scanf("%d",&n);
70 puts("请输入队列元素:");
71 while(n--)
72 {
73 scanf("%d",&e);
74 EnQueue(Q,e);
75 }
76 PrintQueue(Q);
77 puts("请输入你要插入的元素:");
78 scanf("%d",&e);
79 EnQueue(Q,e);
80 PrintQueue(Q);
81 puts("删除元素:");
82 DeQueue(Q,e);
83 printf("你所删除的元素为:%d\n",e);
84 PrintQueue(Q);
85 ClearQueue(Q);
86 system("pause");
87 return OK;
88 }