数据结构(循环队列子系统:c实现)

来源:互联网 发布:淘宝淘宝全屏导航条 编辑:程序博客网 时间:2024/05/16 18:27
#include<stdio.h>//#include<stdlib.h>typedef int datatype;//把int 改名为 datatype#define MAXLEN 10//定义MAXLEN==10#define N sizeof(loopqueue)//一个结点所占的字节数为Ntypedef struct//定义循环队列结构体结构{datatype data[MAXLEN];int front,rear;//int n;}loopqueue;//置空队void Emptyqueue(loopqueue *q){q->front=q->rear=MAXLEN-1;}//进队,循环队列进队int Enterqueue(loopqueue *q){int x=0;printf("请输入,所要 进队 的“整数”:\n");while(1){printf("\t进队整数为:\t");scanf("%d",&x);/*if(!scanf("%d",&x)){printf("\t\t\t输入的“元素“种类错误,请重新输入!!!\n");continue;}else*/ if(q->front==(q->rear+1)%MAXLEN){printf("\t\t\t循环队列已满,不能进队!!!\n");return 0;}else if(x==0){break;}else{q->rear=(q->rear+1)%MAXLEN;q->data[q->rear]=x;//q->n++;printf("\t\t\t入队成功!\n");}}}//出队,队内元素出队,先进先出void Putqueue(loopqueue *q){int m=0;int x;//m=q->n;if(q->front==q->rear){printf("\t\t\t循环队列 已空 ,不能出队!!!\n");}else{//printf("出队的元素为:   ");//printf("%d",q->data[q->rear]);q->front=(q->front+1)%MAXLEN;x=q->data[q->front];//m--;;printf("\t\t\t出队成功!\t");//printf("出队的元素为:   ");//printf("%d",q->data[q->rear]);//q->n--;}}//求队中元素个数void Lengthqueue(loopqueue *q){//int k;printf("\t队中元素的个数为:\t");//printf("%d",q->n);//printf("\t");printf("%d",(q->rear-q->front+MAXLEN)% MAXLEN);}// 显示,队内元素的显示int ShowQueue(loopqueue *q)                                           {  int k=q->front;   if (k==q->rear)    {  printf("\n\t\t 此队列为空! \n");       return 0;   }   printf("\n\t\t 此队列元素为:");   do      {  k=(k+1)%MAXLEN;        printf("%4d",q->data[k]); } while (k!=q->rear);   printf("\n");   return 0;}int main(){int a=0;loopqueue q;Emptyqueue(&q);while(1)    {printf("                        \n\t\t\t\t\t\t循环队列系统子系统\n");printf("            \t\t***************************************************\n");printf("            \t\t*               1------进    队                   *\n");    printf("            \t\t*               2------出    队                   *\n");printf("            \t\t*               3------显    示                   *\n");printf("            \t\t*               4------求队中元素个数             *\n");printf("            \t\t*               0------返    回                   *\n");printf("            \t\t***************************************************\n");printf("            请输入(0-4)选项:\n");        printf("\n请输入所要达到第几号功能:\t");//fflush(stdin);scanf("%d",&a);        if(a == 1)            Enterqueue(&q);        else if(a == 2)            Putqueue(&q);        else if(a == 3)            ShowQueue(&q);        else if(a == 4)           Lengthqueue(&q);        else if(a == 0)            return 0;        else{            printf("!!!!!输入有误,请重新输入!!!!!\n");} }} 

1 0
原创粉丝点击