使用數(shù)組創(chuàng)建隊(duì)列
Posted on 2012-02-28 00:38 hoshelly 閱讀(365) 評(píng)論(0) 編輯 收藏 引用 所屬分類: DS && Algorithm#include<stdio.h> //使用數(shù)組創(chuàng)建隊(duì)列
#define MAXQUEUE 10 //隊(duì)列的最大容量
int queue[MAXQUEUE]; //隊(duì)列的數(shù)組聲明
int front=-1;//隊(duì)列的隊(duì)頭
int rear=-1; //隊(duì)列的隊(duì)尾
//隊(duì)列數(shù)據(jù)的存入
int enqueue(int value)
{
if(rear>=MAXQUEUE)
return -1; //檢查隊(duì)列是否全滿
rear++; //隊(duì)尾指針往前移
queue[rear]=value; //存入隊(duì)列
}
//隊(duì)列數(shù)據(jù)的取出,取出時(shí)隊(duì)頭指針往后移
int dequeue()
{
if(front==rear) //檢查隊(duì)列是否是空
return -1; //無(wú)法取出
front++; //隊(duì)頭指針往前移(即向隊(duì)尾指針方向移)
return queue[front]; //隊(duì)列取出
}
//主程序:模擬隊(duì)列操作
//輸出輸入的內(nèi)容都會(huì)存儲(chǔ)在數(shù)組中,接著輸出數(shù)組內(nèi)容來(lái)看其結(jié)果
void main()
{
int input[100];//存儲(chǔ)輸入的元素
int output[100];//存儲(chǔ)取出的元素
int select;
int i_count=0; //數(shù)組input的索引
int o_count=0;
int loop=1;
int i,temp;
while(loop)
{
printf("[1]輸入 [2]取出 [3]列出全部?jī)?nèi)容 ==>");
scanf("%d",&select);
switch(select)
{
case 1:printf("請(qǐng)輸入存入隊(duì)列的值(%d)==> ",i_count+1);
scanf("%d",&temp);
if(enqueue(temp) == -1)
printf("隊(duì)列全滿.\n");
else
input[i_count++]=temp;
break;
case 2:if((temp=dequeue())==-1)
printf("隊(duì)列是空的.\n");
else
{
printf("取出隊(duì)列元素:%d\n",temp);
output[o_count++]=temp;
}
break;
case 3: loop=0;
break;
}
}
printf("輸入隊(duì)列的元素:");
for(i=0;i<i_count;i++)
printf("[%d]",input[i]);
printf("\n取出隊(duì)列的元素: ");
for(i=0;i<o_count;i++)
printf("[%d]",output[i]);
printf("\n剩下隊(duì)列的元素:");
while((temp=dequeue())!=-1)
printf("[%d]",temp);
printf("\n");
}