#define MAXSIZE 50 /*隊列的最大長度*/
#define QueueElementType int
#define TRUE 1
#define FALSE 0
# include <stdio.h>
typedef struct
{QueueElementType element[MAXSIZE]; /* 隊列的元素空間*/
int front;
int rear ;
}SeqQueue;
void InitQueue(SeqQueue * Q) /* 將*Q初始化為一個空的循環(huán)隊列 */
{
Q->front=Q->rear=0;
}
void print(SeqQueue *Q)
{int w;
if(Q->front<Q->rear){
for(w=Q->front;w<Q->rear;w++)
printf("%d",Q->element[w]);}
if(Q->front>Q->rear)
{for(w=Q->front;w<MAXSIZE;w++)
printf("%d",Q->element[w]);
for(w=0;w<Q->rear;w++)
printf("%d",Q->element[w]);
}
}
int EnterQueue(SeqQueue *Q, QueueElementType x)/*將元素x入隊*/
{
if((Q->rear+1)%MAXSIZE==Q->front) /*隊列已經滿了*/
return(FALSE);
Q->element[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE; /* 重新設置隊尾指針 */
print(Q);
return(TRUE); /*操作成功*/
}
int DeleteQueue(SeqQueue *Q, QueueElementType * x)/*刪除隊列的隊頭元素,用x返回其值*/
{
if(Q->front==Q->rear) /*隊列為空*/
return(FALSE);
*x=Q->element[Q->front];
Q->front=(Q->front+1)%MAXSIZE; /*重新設置隊頭指針*/
return(TRUE); /*操作成功*/
}
int choose()
{
int d;
printf("請選擇你要進行的功能\n");
printf("插入隊列尾元素請選擇1\n");
printf("刪除隊列頭元素請選擇2\n");
printf("\n");
scanf("%d",&d);
return d;
}
void main()
{SeqQueue Q;
int i,f,m,x,n=0;
InitQueue(&Q);/* 將*Q初始化為一個空的循環(huán)隊列 */
while(!n)
switch(choose())
{
case 1:
printf("請輸入你要插入的數(shù)字\n");
scanf("%d",&i);
f=EnterQueue(&Q, i);
if(f)
printf("插入成功\n");
else
printf("隊列已滿\n");
break;
case 2:
printf("刪除隊列的隊頭元素是:");
m=DeleteQueue(&Q, &x);
if(m)
printf("%d\n",x);
else
printf("刪除失敗\n");
print(&Q);
break;
default :n=1;
}
}
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請
點擊舉報。