欢迎来到天天文库
浏览记录
ID:51944510
大小:12.91 KB
页数:7页
时间:2020-03-20
《链式队列的基本操作.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#includetypedefcharElemType;typedefstructQNode{ElemTypedata;structQNode*next;}QNode,*QueuePtr;typedefstruct{QueuePtrfront;QueuePtrrear;}LinkQueue;//链式队列//初始化LinkQueueInitQueue(){LinkQueueQ;Q.rear=(QNode*)malloc(sizeof(QNode));Q.front=Q.rear;if(Q.front==NULL)pri
2、ntf("内存分配失败");else{Q.front->next=NULL;returnQ;}}//判断链栈是否为空intQueueEmpty(LinkQueueQ){if(Q.front->next==NULL)return1;elsereturn0;}//求链式队列长度intQueueLength(LinkQueueQ){intcount=0;QNode*s;s=Q.front->next;while(s!=NULL){count++;s=s->next;}returncount;}//元素入队intEnQueue(LinkQueue&Q,ElemTypee){
3、QNode*s;s=(QNode*)malloc(sizeof(QNode));if(!s){printf("内存分配失败");return0;}else{s->data=e;s->next=NULL;Q.rear->next=s;Q.rear=s;return1;}}//元素出队intDeQueue(LinkQueue&Q,ElemType&e){QNode*s;if(Q.front==Q.rear){printf("队列已空");return0;}else{s=Q.front->next;e=s->data;Q.front->next=s->next;if(
4、Q.rear==s)Q.rear=Q.front;free(s);return1;}}//取队头元素intGetHead(LinkQueueQ,ElemType&e){QNode*s;if(Q.front==Q.rear){printf("队列已空");return0;}else{s=Q.front->next;e=s->data;return1;}}//清空队列voidClearQueue(LinkQueue&Q){while(Q.front!=NULL){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}}//
5、遍历队列voidQueueTraverse(LinkQueueQ){QNode*s;ElemTypee;s=Q.front->next;while(s){e=s->data;printf("%c",e);s=s->next;}}intscan(){intd;printf("请输入要进行的操作1.初始化一个链式队列2.清空队列3.求队列长度4.检查队列是否为空5.取队头元素6.元素入队7.元素出队8.输出队列所有元素其他键退出...");scanf("%d",&d);return(d);}intmain(){intq
6、uit=0;ElemTypee;LinkQueueQ;while(!quit)switch(scan()){case1:Q=InitQueue();printf("");break;case2:ClearQueue(Q);printf("");break;case3:printf("队列的长度为:%d",QueueLength(Q));break;case4:if(QueueEmpty(Q))printf("队列为空");elseprintf("队列非空");break;case5:if(GetHead(Q,e))printf("队头元素为:%c",
7、e);elsebreak;break;case6:printf("请输入要入队的元素:");getchar();scanf("%c",&e);if(EnQueue(Q,e))printf("%c已入队",e);break;case7:if(DeQueue(Q,e))printf("%c已出队",e);break;case8:QueueTraverse(Q);break;default:quit=1;}return0;}
此文档下载收益归作者所有