Posted on 2012-02-28 00:38
hoshelly 閱讀(365)
評論(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");
}