大家帮忙看看这队列的链表存储结构有什么问题,老找不到错误。




#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);
void main()
{
    LinkQueue que;ElemType y,x;
int cord;
do{
    printf("\n        主菜单               \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)
    {
    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",y);
        outlin(que);
           }break;
    case 4:exit(0);
    }
}while(cord<=4);
}




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;
    printf("n="); 
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        printf("\n data= ");
    scanf("%d",&x);
    insert(qe,x);
    }
}