|
代码:
#include <stdio.h>
#define MAXQUEUE 10 /*队列最大容量*/
int queue [MAXQUEUE]; /*队列数组*/
int front = -1; /*队列的队头*/
int rear = -1; /*队列的队尾*/
/*数据的存入*/
int enqueue (int value)
{
if (rear >= MAXQUEUE) /*检查队列是否全满*/
return (-1); /*已满*/
rear++; /*队尾指针前移*/
queue [rear] = value;
}
/*取出队列数据*/
int dequeue()
{
if (front == rear) /*检查队列是否为空*/
return (-1);
front++;
return (queue [front]);
}
void main()
{
int input [100];
int output [100];
int select;
int i_count = 0;
int o_count = 0;
int loop = 1;
int i, temp;
while (loop) {
/*选项内容*/
printf ("[1]输入 [2]取出 [3]列出全部内容 ==> ");
scanf ("%d", &select);
switch (select) {
case 1:
printf ("请输入存入队列的值(%d) ==> ", i_count + 1);
scanf ("%d", &temp);
if (enqueue(temp) == -1)
printf ("队列全满.\n");
else
input [i_count++] = temp;
break;
case 2:
if ((temp = dequeue()) == -1)
printf ("队列是空的.\n");
else {
printf ("取出队列元素: %d\n", temp);
output [o_count++] = temp;
}
break;
case 3:
loop = 0;
break;
}
}
printf ("输入队列的元素: ");
for (i = 0; i < i_count; i++)
printf ("[%d]", input[i]);
printf ("\n取出队列的元素: ");
for (i = 0; i < o_count; i++)
printf ("[%d]", output[i]);
printf ("\n剩下队列的元素: ");
while ((temp = dequeue()) != -1)
printf ("[%d]", temp);
printf ("\n");
} 运行输出:beyes@beyes-groad:~/programming/data_structure/Queue$ ./queue.exe
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(1) ==> 3
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(2) ==> 8
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(3) ==> 9
[1]输入 [2]取出 [3]列出全部内容 ==> 9
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(4) ==> 7
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(5) ==> 19
[1]输入 [2]取出 [3]列出全部内容 ==> 2
取出队列元素: 3
[1]输入 [2]取出 [3]列出全部内容 ==> 2
取出队列元素: 8
[1]输入 [2]取出 [3]列出全部内容 ==> 3
输入队列的元素: [3][8][9][7][19]
取出队列的元素: [3][8]
剩下队列的元素: [9][7][19] |
|