这个错误到底怎么回事!大家帮忙看下

qq_33149459 2016-05-08 09:51:35
#include<iostream>
using namespace std;
typedef struct queue { /* 定义队列结构 */
int data; /* 队列元素类型为int */
struct queue *link;
}QUEUE;

void EnQueue( QUEUE **head, QUEUE **tail, int x ) /* 进队操作 */
{
QUEUE *p;
p=(QUEUE *)malloc(sizeof(QUEUE));
P->data=x;
p->link = NULL; /* 队尾指向空 */
if( *head == NULL ) /* 队首为空,即为空队列 */
*head=*link=p
else {
(*tail)->link = p; /* 新单元进队列尾 */
*tail = p; /* 队尾指向新入队单元 */
}
}

int DeQueue( QUEUE **head, QUEUE **tail, int *cp ) /* 出队操作 1:对空 */
{
QUEUE *p;
p = *head;
if( *head==NULL ) /* 队空 */
return 1;
*cp=(*head)->data;
*head=(*head)->link;
if( *head==NULL ) /* 队首为空,队尾也为空 */
*tail=NULL;
free( p ); /* 释放单元 */
return 0;
}

void OutputQueue( QUEUE *head ) /* 输出队列中元素 */
{
while(head!=NULL) {
cout<<head->data;
head=head->link;
}
cout<<endl;
}
#include<iostream>
int main()
{
QUEUE *head, *tail;
int op, i;
head=tail=NULL; /* 讲队列头和尾置为空 */
while( 1 )
{
cout<<"请选择操作,1:进队 2:出队 0:退出 "<<endl;
fflush(stdin); /* 清空标准输入缓冲区 */
cin>>op;
switch( op ) {
case 0: /* 退出 */
return 0;
case 1: /* 进队 */
cout<<"请输入进队元素:" ;
cin>>i;
EnQueue(head) ;
cout<<"队内元素为:\n";
OutputQueue(head);
break;
case 2: /* 出队 */
if(DeQueue(&head,&taill,&i)==0 ) { /* 出队成功 */
cout<<"出队元素为:"<<i;
cout<<" 队内元素为:\n";
OutputQueue(head);
}
else
cout<<"队空\n";
break;
}
}
return 0;
}
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
YXTS122 2016-05-15
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;
typedef struct queue {	 /* 定义队列结构 */
int data;	 /* 队列元素类型为int */
struct queue *link;
}QUEUE;
void EnQueue( QUEUE **head, QUEUE **tail, int x )	/* 进队操作 */
{
QUEUE *p;
p=new QUEUE;
     p->data=x;       
p->link = NULL;	 /* 队尾指向空 */
if( *head == NULL )	/* 队首为空,即为空队列 */
  *head=*tail=p;       
else {
(*tail)->link = p;	/* 新单元进队列尾 */
*tail = p;	 /* 队尾指向新入队单元 */
        }
}

int DeQueue( QUEUE **head, QUEUE **tail, int *cp )	/* 出队操作 1:对空 */
{
QUEUE *p;
        p = *head;
if( *head==NULL )	/* 队空 */
   return 1;
else
{
*cp=(*head)->data;
(*head)=(*head)->link;       
if( *head==NULL )  	/* 队首为空,队尾也为空 */
   *tail=NULL;
delete p;	 /* 释放单元 */
return 0;
}
}

void OutputQueue( QUEUE **head )	 /* 输出队列中元素 */
{
QUEUE *p;
 p = *head;
while(p!=NULL)          {
cout<<p->data;
p=p->link;
}
       cout<<endl;
}


int main()
{
	QUEUE *head,*tail;
int op, i;
head=tail=NULL;	 /*      讲队列头和尾置为空         */
        while( 1 )
{
cout<<"请选择操作,1:进队 2:出队 0:退出 "<<endl;
fflush(stdin);	/* 清空标准输入缓冲区 */
cin>>op;
switch( op ) {
case 0:	 /* 退出 */
return 0;
case 1:	 /* 进队 */
cout<<"请输入进队元素:" ;
        	        	cin>>i;
EnQueue(&head,&tail,i);
cout<<"队内元素为:\n";
OutputQueue(&head);
break;
case 2:	 /* 出队 */
if(DeQueue(&head,&tail,&i)==0 ) 
{	/* 出队成功 */
cout<<"出队元素为:"<<i;
cout<<" 队内元素为:\n";
OutputQueue(&head);
}
else
cout<<"队空\n";
break;
}
}
return 0;
}  
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
关于自己是否适合编程的很简单的测试: 在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案: A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感 A不适合编程(理由:打字准确度偏低、粗心大意) B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念) C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证) D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!) 如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
paschen 版主 2016-05-09
  • 打赏
  • 举报
回复
这里P应该是小写; P->data=x; 这句后面没有分号: if( *head == NULL ) /* 队首为空,即为空队列 */ *head=*link=p; //另外这句中*link有误 这句tail拼错了: if(DeQueue(&head,&taill,&i)==0 )
YXTS122 2016-05-08
  • 打赏
  • 举报
回复
找个时间好好得看一看。。。。。。

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧