程序中有点小问题,求解????
#include<stdio.h>#include<stdlib.h>
#define NULL 0
typedef struct node
{
char c;
struct node *next;
}qnode;
typedef struct
{
qnode *head;
qnode *rear;
}queue;
//构建队列
void getqueue(queue *q)
{
char ch;
qnode *l,*p;
q=(queue *)malloc(sizeof(queue));
q->head=NULL;
q->rear=NULL;
printf("请输入队列元素:\n");
scanf("%c",&ch);
getchar();
while(ch!='!')
{
p=(qnode *)malloc(sizeof(qnode));
p->next=NULL;
p->c=ch;
if(q->head==NULL)
{
q->head=p;
l=p;
}
l->next=p;
l=p;
q->rear=p;
scanf("%c",&ch);
getchar();
}
l=q->head;
while(l!=NULL)
{
printf("%c<--",l->c);
l=l->next;
}
printf("\n队头元素是%c; 队尾元素是%c\n",q->head->c,q->rear->c);
}
void in_out(queue *q)
{
char ch;
int x;
qnode *p,*l;
printf("输入‘1’进队;输入‘2’出队!;其他退出!!!\n");
scanf("%d",&x);
while(x==1)//进队
{
printf("请输入进队元素:");
scanf("%c",&ch);
getchar();
p=(qnode *)malloc(sizeof(qnode));
p->c=ch;
p->next=NULL;
l=q->rear;
l->next=p;
q->rear=p;
printf("输入‘1’进队;输入‘2’出队!;其他退出!!!\n");
scanf("%d",&x);
}
while(x==2)//出队
{
q->head=q->head->next;
printf("输入‘1’进队;输入‘2’出队!;其他退出!!!\n");
scanf("%d",&x);
}
while(x!=1||x!=2)
{
exit(0);
}
l=q->head;
while(l!=NULL)
{
printf("%c<--",l->c);
l=l->next;
}
printf("\n队头元素是%c; 队尾元素是%c\n",q->head->c,q->rear->c);
}
void main()
{
int i;
queue *q;
getqueue(&q);
in_out(&q,i);
}