<<  < 2014 - >  >>
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31




#i nclude<stdio.h>
#i nclude<stdlib.h>
#define MAXASIZE 15
#define OVERFLOW 0
#define ERROR 0
#define OK 1
typedef struct
{
     char *base;
     int front;
     int rear;
}SqQueue;
void quit()
{
  system("cls");
   
}
void menu()
{
   printf("***********请选择您对循环队列进行的操作************\n");
   printf("1.插入数据\n");
   printf("2.删除数据\n");
   printf("3.输出数据\n");
   printf("4.退出菜单\n");
}

int InitQueue(SqQueue &Q)//构建一个空队列
{
Q.base=(char*)malloc(MAXASIZE*sizeof(char));
    if(!Q.base)exit(OVERFLOW);
    Q.front=Q.rear=0;
    return OK;
}
char EnQueue(SqQueue &Q ,int e,int &k)//插入元素e为队列的新的队尾元素
{
    if((Q.rear+1)%MAXASIZE==Q.front) return printf("队满\n");
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXASIZE;
k++;
}

char DeQueue(SqQueue &Q ,int &e,int &k)//删除对头元素
{
if(Q.rear==Q.front) return printf("队空\n");
e=Q.base[Q.front];
printf("删除元素为:%d\n",e);
Q.front=(Q.front+1)%MAXASIZE;
k--;
return e;
}

 void show(SqQueue Q,int k)
 {    int i;
 
 printf("循环队列中的元素有:\n");
 for(i=0;i<k;i++)
 { printf("%d ",Q.base[Q.front]);
   Q.front=(Q.front+1)%MAXASIZE;
 }
 printf("\n");
 }
void main (){
int n,x,y,k=0,a,d,flag;
x=0;
SqQueue q;
InitQueue(q);
         printf("请输入你所要输入元素的个数,请少于6个\n");
     scanf("%d",&y);
   printf("请输入元素\n");
   for(a=0;a<y;a++)
   { scanf("%d",&x);
        EnQueue(q,x,k);
   }
   show(q,k);
   menu();
   do{
   printf("请选择你需要的操作(1--4):\n");
        scanf("%d",&n);
      if(n>=1&&n<=4)
      flag=1;
 
     else
 {
     flag=0;
    printf("您输入有误,请重新选择!");
   }
   } while(flag==0);
   while(flag==1)
{
switch(n)
{case 1:
{
   printf("你想在队列中插入的元素是:\n");
  scanf("%d",&x);
    EnQueue(q,x,k);
show(q,k); break;}
case 2:
{
   DeQueue(q,d,k);
  show(q,k);break;
}
case 3:show(q,k);break;
 case 4:quit();break;
 default :break;
 }
   if(n==4)
 {  
      printf("********************\n");
      printf("      谢谢使用!\n");
      printf("********************\n");break;
 }
    else
    {
    menu();   /*调用菜单函数*/
do{
   printf("请选择你需要的操作(1--4):\n");
        scanf("%d",&n);
      if(n>=1&&n<=4)
      flag=1;
 
     else
 {
     flag=0;
    printf("您输入有误,请重新选择!");
   }
   } while(flag==0);
 printf("\n");
 }
}  
}

  • 标签:插入、删除 
    发表评论:
    天涯博客欢迎您!