Posted on 2012-02-28 00:38
hoshelly 阅读(356)
评论(0) 编辑 收藏 引用 所属分类:
DS && Algorithm
#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; //数组input的索引
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");
}