C语言数据结构打印杨辉三角0
程序运行出来,右半边是对的,但是左半边不对,求解答,谢谢
#include
#include
#define TRUE 1
#define FALSE 0
#define N 7
typedef struct Node
{
int data;
struct Node *next;
}LinkQueueNode;
typedef struct
{
LinkQueueNode *front;
LinkQueueNode *rear;
}LinkQueue;
int InitQueue(LinkQueue *Q) //初始化
{
Q->front=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(Q->front!=NULL)
{
Q->rear=Q->front;
Q->front->next=NULL;
return(TRUE);
}
else return(FALSE);
}
int IsEmpty(LinkQueue *Q)
{
if(Q->front==Q->rear)
return(FALSE);
else return(TRUE);
}
int GetHead(LinkQueue *Q,int *x)
{
if(!IsEmpty(Q))
{
*x=Q->front->data;
return(TRUE);
}
else return(FALSE);
}
int EnterQueue(LinkQueue *q,int x) //入队
{
LinkQueueNode *s;
s=(LinkQueueNode *)malloc(sizeof(LinkQueueNode));
if(s!=NULL)
{
s->data=x;
s->next=NULL;
q->rear->next=s;
q->rear=s;
return(TRUE);
}
else return(FALSE);
}
int DeQueue(LinkQueue *q,int *x) //出队
{
LinkQueueNode *p;
if(q->front==q->rear)
return (FALSE);
p=q->front->next;
q->front->next=p->next;
if(q->rear==p)
q->rear=q->front;
*x=p->data;
free(p);
return (TRUE);
}
void YangHuiTriangle() //打印
{
int n,m,x,temp,j;
LinkQueue Q;
InitQueue(&Q); //初始化队列
m=N;
//printf("\n 1");
EnterQueue(&Q,1); //第一行元素入队
for(n=2;n<=N;n++)
{
for(j=m-1;j>=1;j--)
printf(" ");
m--;
EnterQueue(&Q,1); //第n行的第一个元素入队
for(int i=1;i<=n-2;i++)
{
DeQueue(&Q,&temp);
printf("%d",temp);
printf(" ");
GetHead(&Q,&x);
temp=temp+x;
EnterQueue(&Q,temp);
}
DeQueue(&Q,&x);
printf("%d",x);
EnterQueue(&Q,1);
printf("\n");
}
}
void main()
{
YangHuiTriangle();
}