天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

使用数组创建队列

Posted on 2012-02-28 00:38 hoshelly 阅读(349) 评论(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");
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理