打印杨辉三角--队列的应用

#include <iostream>


#define LINE 7

using std::cout;
using std::cin;

typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct
{
QueuePtr front;
QueuePtr rear;

}LinkQueue;

bool InitQueue(LinkQueue &Q)
{
Q.front = Q.rear = new QNode;
if(!Q.front)
return false;
Q.front->next = NULL;
return true;
}

bool EnQueue(LinkQueue &Q,int e)
{
QueuePtr p = new QNode;
if(!p)
return false;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;

}

bool DeQueue(LinkQueue &Q, int &e)
{
QueuePtr p;
if(Q.front == Q.rear)
return false;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if(Q.rear == p)
Q.rear = Q.front;
delete p;
return true;

}
void yangHui(LinkQueue &q,int n)
{
int s,t,i,j;
InitQueue(q);
EnQueue(q,1);
EnQueue(q,1);
s = 0;
for(i = 1; i<n ;i++)
{
cout<<std::endl;
EnQueue(q,0);
for(j = 1;j<=i+2; j++)
{
DeQueue(q,t);
EnQueue(q,s+t);
s = t;
if(j != i+2)
cout<<s<<" ";
}
}
}


int main()
{
LinkQueue q;
yangHui(q,LINE);

system("pause");
return 0;
}

posted @ 2014-09-28 20:15  Android开发8585  阅读(214)  评论(0编辑  收藏  举报