1、/* * * * * * * * * * * * * * * * * * * * * * * */*PROGRAM :链式队列 */*CONTENT :初始化,入队列,出队列 */* * * * * * * * * * * * * * * * * * * * * * * *#include #include #include #include enum BOOLFalse,True;typedef struct QNode /定义节点结构char data; /数据域struct QNode *next; /后向指针QNode,*QueuePtr;typedef struct linkqueu
2、e /定义队列结构QueuePtr front; /队首指针QueuePtr rear; /队尾指针LinkQueue;void initial(LinkQueue /初始化一个队列BOOL En_LinkQueue(LinkQueue /将一个元素入队列BOOL De_LinkQueue(LinkQueue /将一个元素出队列void Print_LinkQueue(LinkQueue);/显示队列中所有元素void main()LinkQueue ls;char ch,j;int flag=1;BOOL temp;textbackground(3); /设定屏幕颜色textcolor(15
3、);clrscr();/-程序解说-printf(“本程序实现链式结构的队列的操作。n“);printf(“可以进行入队列,出队列等操作。n“);/-initial(ls); /初始化队列while(flag) printf(“请选择:n“);printf(“1.显示队列所有元素n“);printf(“2.入队列n“);printf(“3.出队列n“);printf(“4.退出程序n“);scanf(“ %c“,switch(j)case 1:Print_LinkQueue(ls); /显示队列中所有元素break;case 2:printf(“请输入要人队的元素(一个字符):“);scanf
4、(“ %c“, /输入要入队列的字符En_LinkQueue(ls,ch);/入队列Print_LinkQueue(ls);break;case 3:temp=De_LinkQueue(ls,ch); /出队列if(temp!=False) printf(“出队一个元素:%cn“,ch);/若队列不空,显示出队列的元素Print_LinkQueue(ls);else printf(“队列为空!n“);/否则队列为空break;default:flag=0;printf(“程序运行结束,按任意键退出!n“);getch();void initial(LinkQueue /生成一个头结点,并把首尾
5、指针指向头结点 Q.front-next=NULL;BOOL En_LinkQueue(LinkQueue p=(QueuePtr)malloc(sizeof(QNode);/生成一个新节点p-data=ch; /赋值p-next=NULL; Q.rear-next=p; /插入至队列尾Q.rear=p; /修改队尾指针 return True; BOOL De_LinkQueue(LinkQueue if(Q.front=Q.rear) return False; /判断队列是否已空,已空返回 Falsep=Q.front-next; /p指向队列中第一个元素 ch=p-data; /取得该元素值Q.front-next=p-next; /修改队首指针if(Q.rear=p) Q.rear=Q.front;/若队列已空,把队尾指针指向头结点return True; /成功出队列,返回 Truevoid Print_LinkQueue(LinkQueue Q) /显示队列中所有元素QueuePtr p;p=Q.front-next;if(p=NULL) printf(“队列为空!n“);/队列为空else while(p!=NULL) /否则显示队列中所有元素printf(“%c “,p-data);p=p-next;printf(“n“);