我出队列的值是对的,但out出来的值不对
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef int elemtype;
typedef struct Qnode
{
struct Qnode *next;
elemtype data;
}Qnode,*queue;
typedef struct
{
queue rear;
queue front;
}Lqueue;
Lqueue s;
void initqueue(Lqueue *s)
{
s->front=s->rear=(queue)malloc(sizeof(Qnode));
if(!s->front)
printf("\n分配失败");
s->front->next=NULL;
s->rear=s->front;
}
void out(Lqueue s)
{
Qnode *p;
elemtype e;
p=s.front->next;
while(p<=s.rear)
{
printf("\n%4d",*p);
p++;
}
}
void enqueue(Lqueue *s,elemtype e)
{
queue p;
p=(queue)malloc(sizeof(Qnode));
p->data=e;
p->next=NULL;
s->rear->next=p;
s->rear=p;
printf("\n入队元素:%d",*p);
}
elemtype dequeue(Lqueue *s)
{
queue p;
elemtype e;
p=s->front->next;
e=p->data;
s->front->next=p->next;
free(p);
return(e);
}
void main()
{
int k; elemtype e,x; char ch;
initqueue( &s);
do { printf("\n");
printf("\n 1. 数据元素 e 进队列 ");
printf("\n 2. 出队一个元素,返回其值");
printf("\n 3. 结束程序运行");
printf("\n 请输入您的选择 (1,2,3)");
scanf("%d",&k);
switch(k)
{ case 1:{ printf("\n 进队 e=?"); scanf("%d",&e);
enqueue(&s,e); out(s);
} break;
case 2:{ x= dequeue(&s);
printf("\n 出队元素 : %d", x);
out(s);
} break;
case 3: exit(0);
} /* switch */
}while(k>=1 && k<3);
printf("\n 再见!");
printf("\n 打回车键,返回。"); ch=getch();
}