#include "stdio.h"
#include "stdlib.h"
#define ElemType int
typedef struct NodeType{
ElemType data;
struct NodeType *next;
}NodeType;
typedef struct{
NodeType *front,*rear;
}LinkQueue;
NodeType *p,*s,*h;
void outlin(LinkQueue qq);
void creat(LinkQueue *qe);
void insert(LinkQueue *qe,ElemType x);
ElemType delet(LinkQueue *qe);
int main(){
LinkQueue que;
ElemType y,x;
int i,cord;
do{
printf("\n 主菜單 \n");
printf(" 1.建立鏈表隊列\n");
printf(" 2.入隊一個元素\n");
printf(" 3.出隊一個元素\n");
printf(" 4.結束程序運行\n");
printf(" --------------\n");
printf("輸入你的選擇:1.2.3.4\n");
scanf("%d",&cord);
switch(cord){
case 1:{
creat(&que);
outlin(que);
}break;
case 2:{
printf("\n x=?");
scanf("%d",&x);
insert(&que,x);
outlin(que);
}break;
case 3:{
y=delet(&que);
printf("\n x=%d\n",y);
outlin(que);
}break;
case 4:exit(0);
}
}while(cord<=4);
return 0;
}
void outlin(LinkQueue qq){
p=qq.front->next;
while(p!=NULL){
printf(" data=%4d\n",p->data);
p=p->next;
}
printf("\n outend \n\n");
}
void insert(LinkQueue *qe,int x){
s=(NodeType*)malloc(sizeof(NodeType));
s->data=x;
s->next=NULL;
qe->rear->next=s;
qe->rear=s;
}
ElemType delet(LinkQueue *qe){
ElemType x;
if(qe->front==qe->rear){
printf("隊列爲空\n");
x=0;
}else{
p=qe->front->next;
qe->front->next=p->next;
if(p->next==NULL)
qe->rear=qe->front;
x=p->data;
free(p);
}
return x;
}
void creat(LinkQueue *qe){
int i,n,x;
h=(NodeType*)malloc(sizeof(NodeType));
h->next=NULL;
qe->front=h;
qe->rear=h;
printf("請輸入預先進入隊列的數據元素數量 n=");
scanf("%d",&n);
for(int i=1;i<=n;i++){
printf("\n data=");
scanf("%d",&x);
insert(qe,x);
}
}
有時間再寫