C语言 数据结构 帮我看看这个程序怎么错了!我是新手,帮改个!为什么不能在函数参数用&!不然怎么写?

#include<stdio.h>#include<stdlib.h>voidmenu(void){printf("\n\t\t\t欢迎使用本系统,队列的使用,请按要求操... #include<stdio.h>
#include<stdlib.h>

void menu(void)
{
printf("\n\t\t\t欢迎使用本系统,队列的使用,请按要求操作\n\t\t\t1,初始化队列\n\t\t\t2,现队列长度\n\t\t\t3,现队头元素\n\t\t\t4,字符排队\n\t\t\t5,字符出队\n\t\t\t6,退出\n\n");

}

typedef struct QNode{
char date; /*定义队列类型*/
struct QNode *next;
}QNode,*Queueptr;

typedef struct{
QNode *front;
QNode *rear;
}linkQueue;

int initQueue(LinkQueue &Q)
{
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
Q.front=NULL;
return 1;
}

int EnQueue(LinkQueue &Q,char e)
{
LinkQueue q;
q=(QueuePtr)malloc(sizeof(Queue));
q->date=e;
q->next=NULL;
Q.rear->next=q;
Q.rear=q;
return 1;
}

int DeQueue(LinkQueue &Q,cahr &e)
{
LinkQueue q;
if(Q.front==Q.rear) return 0;
e=Q.front->date;
q=Q.front->next;
Q.front->next=q->next;
free(q);
return 1;
}

void main()
{
int a;
do
{

menu();
scanf("%d",&a);
switch(a)
{
case 1:{
initqueue(Q);
printf("队列初始化成功\n");
system("pause");
system("cls");
}break;
case 2:{
printf("此功能未开放\n");
system("pause");
system("cls");
}break;
case 3:{
printf("队头元素为%c",front->date);
system("pause");
system("cls");
}
case 4:{
char e;
printf("请输入要排队队员\n");
fflush(stdin); //清除缓冲区,即‘回车键’
scanf("%c",&e);
EnQueue(Q,e);
printf("排队成功\n");
system("pause");
system("cls");

}
case 5:{
char e;
DeQueue(Q,e);
printf("成功,出队队员为%c",e\n);
system("pause");
system("cls");
}
case 6:{
a=0;
printf("欢迎下次使用\n");
}
default:printf("输入错误请重新输入\n");
}
}while(a);

}

改一个给我吧 就是和简单的队列
展开
 我来答
一本正传
2011-11-26 · 超过16用户采纳过TA的回答
知道答主
回答量:89
采纳率:0%
帮助的人:41.9万
展开全部
没看完,具体执行结果贴出来看看,这样查错方便
1a2d3e
推荐于2016-11-18 · TA获得超过538个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:337万
展开全部
#include<stdio.h>
#include<stdlib.h>
void menu()
{
printf("\n\t\t\t欢迎使用本系统,队列的使用,请按要求操作\n\t\t\t1,初始化队列\n\t\t\t2,现队列长度\n\t\t\t3,现队头元素\n\t\t\t4,字符排队\n\t\t\t5,字符出队\n\t\t\t6,退出\n\n");
}
typedef struct QNode
{
char date; /*定义队列类型*/
struct QNode *next;
}QNode;
typedef struct
{
QNode *front;
QNode *rear;
}LinkQueue;

int initQueue(LinkQueue *Q)
{
Q->front=(QNode*)malloc(sizeof(QNode));
if(Q->front!=NULL)
{
Q->rear=Q->front;
Q->front->next=NULL;
return 1;
}
else return 0;
}

int EnQueue(LinkQueue *Q,char e)
{
QNode *q;
q=(QNode*)malloc(sizeof(QNode));
if(q!=NULL)
{
q->date=e;
q->next=NULL;
Q->rear->next=q;
Q->rear=q;
return 1;
}
else return 0;
}

int DeQueue(LinkQueue *Q,char e)
{
QNode *q;
if(Q->front==Q->rear) return 0;
q=Q->front->next;
Q->front->next=q->next;
if(Q->rear==q)
Q->rear=Q->front;
e=q->date;
free(q);
return 1;
}

void main()
{
LinkQueue Q;
int a;
do
{
menu();
scanf("%d",&a);
switch(a)
{
case 1:
{
initQueue(&Q);
printf("队列初始化成功\n");
system("pause");
system("cls");
}break;
case 2:
{
printf("此功能未开放\n");
system("pause");
system("cls");
}break;
case 3:
{
printf("队头元素为%c",Q.front->date);
system("pause");
system("cls");
}
case 4:
{
char e;
printf("请输入要排队队员\n");
fflush(stdin); //清除缓冲区,即‘回车键’
scanf("%c",&e);
EnQueue(&Q,e);
printf("排队成功\n");
system("pause");
system("cls");
}
case 5:
{
char e;
DeQueue(&Q,e);
printf("成功,出队队员为%c\n",e);
system("pause");
system("cls");
}
case 6:
{
a=0;
printf("欢迎下次使用\n");
}
default:printf("输入错误请重新输入\n");
}
}while(a);

}

你看看,没错误了,你看能不能实现你的功能。。。。
追问
能不能告诉我int initQueue(LinkQueue)   中的 *Q代表什么意思?没看过这种形式
追答
这是指针啊,定义了一个结构体指针,书上的介绍就是那样写的,书上关于队列的定义就是那样的。。明白???
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式