欢迎来到天天文库
浏览记录
ID:48016402
大小:41.50 KB
页数:5页
时间:2020-01-18
《队列的基本操作(c语言版).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#includetypedefintelemType;structQueuePtr{elemTypedata;structQueuePtr*next;};structLinkQueue{structQueuePtr*front;structQueuePtr*rear;};voidinitQueue(structLinkQueue*Q)/*第一个操作构造一个空队列q*/{Q->front=Q->rear=NULL;/*把队首和队尾指针置空*/return;}voidpush(struc
2、tLinkQueue*Q,elemTypex)/*第二个操作插入元素e为q的新的队尾元素*/{/*得到一个由newP指针所指向的新结点*/structQueuePtr*newP;newP=(structQueuePtr*)malloc(sizeof(structQueuePtr));if(newP==NULL){printf("内存空间分配失败!");exit(1);}/*把x的值赋给新结点的值域,把新结点的指针域置空*/newP->data=x;newP->next=NULL;/*若链队为空,则新结点即是队首结点又是队尾结点*/if(
3、Q->rear==NULL){Q->front=Q->rear=newP;}else{/*若链队非空,则依次修改队尾结点的指针域和队尾指针,使之指向新的队尾结点*/Q->rear=Q->rear->next=newP;/*可以分两句话来写*/}}elemTypepop(structLinkQueue*Q)/*第三个操作队列不为空,则删除q的队头元素,用e返回其值,并返回ok;*/{structQueuePtr*p;elemTypetemp;/*若链队为空则停止运行*/if(Q->front==NULL){printf("队列为空,无法删
4、除!");exit(1);}temp=Q->front->data;/*暂存队尾元素以便返回*/p=Q->front;/*暂存队尾指针以便回收队尾结点*/Q->front=p->next;/*使队首指针指向下一个结点*//*若删除后链队为空,则需同时使队尾指针为空*/if(Q->front==NULL){Q->rear=NULL;}free(p);/*回收原队首结点*/returntemp;/*返回被删除的队首元素值*/}/*第四个操作返回队列头元素*/elemTypegettop(structLinkQueue*Q){/*若链队为空则
5、停止运行*/if(Q->front==NULL){printf("队列为空,无法删除!");exit(1);}returnQ->front->data;/*返回队首元素*/}/*第五个操作判断队列是否为空*/intemptyQueue(structLinkQueue*Q){/*判断队首或队尾任一个指针是否为空即可*/if(Q->front==NULL){printf("asd");return0;}else{printf("dfg");return1;}}/*第六个操作清空队列*/voidclearQueue(structLinkQue
6、ue*Q){structQueuePtr*p=Q->front;/*队首指针赋给p*//*依次删除队列中的每一个结点,最后使队首指针为空*/while(p!=NULL){Q->front=Q->front->next;free(p);p=Q->front;}/*循环结束后队首指针已经为空*/Q->rear=NULL;printf("队列已经清空");return;}intmain(){structLinkQueueQ;inti;inta,b,c,d;a=b=c=d=0;//initQueue(&q);while(1){print
7、f("每种方法都对应一个编号,输入编号进行相应的操作。");printf("1--操作initQueue构造一个队列Q");printf("2--操作gettop返回队列顶元素e");printf("3--操作enQueue插入元素e到队里尾部");printf("4--操作pop删除Q队列的首元素");printf("5--操作clearQueue将Q清为空队列");printf("6--操作emptyQueue判断Q是否为空队列,是返回0,否返回1;");printf("7--退出程序");pri
8、ntf("请选择一个基本操作:");scanf("%d",&a);switch(a){case1:initQueue(&Q);break;case2:c=0;c=gettop(&Q);printf("队
此文档下载收益归作者所有