- UID
- 852722
|
#include<stdio.h>
#include<stdlib.h>
#define ElemType int
#define Q (*qe)
struct quenode
{
ElemTypedata;
structquenode *next;
}*p,*s,*h;
struct quefr
{
structquenode *front,*rear;
};
main()
{
structquefr *que;
intx,cord;
voidOutlin(struct quefr qq);
voidcreat(struct quefr *qe);
voidinsert(struct quefr *p,ElemType x);
ElemTypedeletes(struct quefr *qe);
do
{
printf("\n");
printf(" 主菜单 \n");
printf(" 1 建立链表队列 \n");
printf(" 2 入队一个元素 \n");
printf(" 3 出队一个元素 \n");
printf(" 4 结束程序运行 \n");
printf("-------------------------------\n");
printf("请输入您的选择(1, 2,3, 4) ");
scanf("%d",&cord);
switch(cord)
{
case1:
{
que=(structquefr *)malloc(sizeof(struct quefr));
creat(que);
Outlin(*que);
}break;
case2:
{
printf("x=?");
scanf("%d",&x);
insert(que,x);
Outlin(*que);
}break;
case3:
{
printf("x=%d\n",deletes(que));
Outlin(*que);
}break;
case4:
{
exit(0);
}
}
}while(cord<=4);
}
void Outlin(struct quefr qq)
{
p=qq.front->next; /*指向第一个数据元素节点 */
while(p!=NULL)
{
printf("data=%d\n",p->data);
p=p->next;
}
printf("\noutend \n");
}
void insert(struct quefr *qe,int x)/*入队x值的节点*/
{
s=(structquenode *)malloc(sizeof(struct quenode));
s->data=x;
s->next=NULL;
Q.rear->next=s;
Q.rear=s;
}
ElemType deletes(struct quefr *qe)
{
ElemTypex;
if(Q.front==Q.rear)
{
printf("队列为空。\n");
x=0;
}
else
{
p=Q.front->next;
Q.front->next=p->next;
if(p->next==NULL)
Q.rear=Q.front;
x=p->data;
free(p);
}
return(x);
}
void creat(struct quefr *qe)
{
inti,n,x;
printf("n=");
scanf("%d",&n);
h=(structquenode*)malloc(sizeof(struct quenode));
h->next=NULL;
Q.front=h;
Q.rear=h;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
insert(qe,x);
}
} |
|