用队列方式输出杨辉三角!程序改错,请求帮忙!谢谢了
#include<stdlib.h>#include<stdio.h>
#include<iostream.h>
#include<malloc.h>
typedef struct Qnode
{
int data;
struct Qnode *next;
}Qtype;
typedef struct LinkQueue
{
Qtype *front;
Qtype *rear;
}LinkQueue;
int InitQueue(LinkQueue *Q)
{
Qtype *p;
p=(Qtype*)malloc(sizeof(Qtype));
if(!p)
return 0;
p->next=NULL;
Q->front=Q->rear=p;
return 1;
}
int EnQueue(LinkQueue *Q,int e)
{
Qtype *Newnode;
Newnode=(Qtype*)malloc(sizeof(Qtype));
if(!Newnode)
return 0;
Newnode->data=e;
Newnode->next=Q->rear->next;
Q->rear->next=Newnode;
Q->rear=Newnode;
return 1;
}
int Empty(LinkQueue *Q)
{
return(Q->front==Q->rear?1:0);
}
int DeQueue(LinkQueue *Q,int *e)
{
Qtype *p;
if(Empty(Q))
return 0;
p=Q->front->next;
*e=p->data;
Q->front->next=p->next;
if(Q->front->next==NULL)
Q->rear=Q->front;
free(p);
return 1;
}
int Gethead(LinkQueue *Q,int *e)
{
if(Empty(Q))
return 0;
*e=Q->front->next->data;
return 1;
}
int main()//yanghuisanjiao
{
int i,j,n,temp,e;
LinkQueue Q;
InitQueue(&Q);
EnQueue(&Q,1);//第一行元素入队
cin>>n;
for(i=2;i<=n;i++)
{
EnQueue(&Q,1);//第n行的第一个元素入队
for(j=0;j<=i-2;j++)
{
DeQueue(&Q,&temp);
cout<<temp;//打印第n-1行的元素
Gethead(Q,&e);
temp=temp+e;//利用第n-1行的元素产生第n行的元素
EnQueue(&Q,temp);
}
DeQueue(&Q,&e);
cout<<e;//打印第n-1行的最后一个元素
EnQueue(&Q,1);//最后一个元素入队
}
return 0;
}