您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > 链式队列的c语言操作
链式队列的初始化链式队列的初始化链式队列的初始化链式队列的初始化,入队列入队列入队列入队列,出队列出队列出队列出队列#includeconio.h#includestdio.h#includestdlib.henumBOOL{False,True};typedefstructQNode//定义节点结构{chardata;//数据域structQNode*next;//后向指针}QNode,*QueuePtr;typedefstructlinkqueue{//定义队列结构QueuePtrfront;//队首指针QueuePtrrear;//队尾指针}LinkQueue;voidinitial(LinkQueue&);//初始化一个队列BOOLEn_LinkQueue(LinkQueue&,char);//将一个元素入队列BOOLDe_LinkQueue(LinkQueue&,char&);//将一个元素出队列voidPrint_LinkQueue(LinkQueue);//显示队列中所有元素voidmain(){LinkQueuels;charch,j;intflag=1;BOOLtemp;//---------------------程序解说-----------------------printf(本程序实现链式结构的队列的操作。\n);printf(可以进行入队列,出队列等操作。\n);//----------------------------------------------------initial(ls);//初始化队列while(flag){printf(请选择:\n);printf(1.显示队列所有元素\n);printf(2.入队列\n);printf(3.出队列\n);printf(4.退出程序\n);scanf(%c,&j);switch(j){case'1':Print_LinkQueue(ls);//显示队列中所有元素break;case'2':printf(请输入要人队的元素(一个字符):);scanf(%c,&ch);//输入要入队列的字符En_LinkQueue(ls,ch);//入队列Print_LinkQueue(ls);break;case'3':temp=De_LinkQueue(ls,ch);//出队列if(temp!=False){printf(出队一个元素:%c\n,ch);//若队列不空,显示出队列的元素Print_LinkQueue(ls);}elseprintf(队列为空!\n);//否则队列为空break;default:flag=0;printf(程序运行结束,按任意键退出!\n);}}getch();}voidinitial(LinkQueue&Q){//队列初始化Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));//生成一个头结点,并把首尾指针指向头结点Q.front-next=NULL;}BOOLEn_LinkQueue(LinkQueue&Q,charch){//入队列,成功返回True,失败返回FalseQueuePtrp;p=(QueuePtr)malloc(sizeof(QNode));//生成一个新节点p-data=ch;//赋值p-next=NULL;Q.rear-next=p;//插入至队列尾Q.rear=p;//修改队尾指针returnTrue;}BOOLDe_LinkQueue(LinkQueue&Q,char&ch){//出队列,成功返回True,并用ch返回该元素值,失败返回FalseQueuePtrp;if(Q.front==Q.rear)returnFalse;//判断队列是否已空,已空返回Falsep=Q.front-next;//p指向队列中第一个元素ch=p-data;//取得该元素值Q.front-next=p-next;//修改队首指针if(Q.rear==p)Q.rear=Q.front;//若队列已空,把队尾指针指向头结点returnTrue;//成功出队列,返回True}voidPrint_LinkQueue(LinkQueueQ){//显示队列中所有元素QueuePtrp;p=Q.front-next;if(p==NULL)printf(队列为空!\n);//队列为空else{while(p!=NULL)//否则显示队列中所有元素{printf(%c,p-data);p=p-next;}printf(\n);}}
本文标题:链式队列的c语言操作
链接地址:https://www.777doc.com/doc-4151044 .html