/*用队列生成杨辉三角*/ #include <iostream> using namespace std; typedef struct Node{ int element; Node* pNext; }Node,*LinkList; typedef struct { LinkList head; LinkList tail; }Queue; void InitQueue(Queue& queue) { queue.head=(LinkList)malloc(sizeof(Node)); queue.head->pNext=NULL; queue.tail=queue.head; } void EnQueue(Queue& queue,int element) { LinkList temp=(LinkList)malloc(sizeof(Node)); temp->element=element; temp->pNext=NULL; queue.tail->pNext=temp; queue.tail=temp; } void DeQueue(Queue& queue,int &element) { if (queue.head->pNext==queue.tail) { element=queue.tail->element; free(queue.tail); queue.tail=queue.head; return; } LinkList temp=queue.head->pNext; element=temp->element; queue.head->pNext=temp->pNext; free(temp); } int EmptyQueue(Queue queue) { if (queue.head==queue.tail) { return 1; } return 0; } void DestroyQueue(Queue& queue) { free(queue.head); queue.head=queue.tail=NULL; } int GetHead(Queue queue) { return queue.head->pNext->element; } void main() { int N; cin>>N; Queue queue; InitQueue(queue); EnQueue(queue,1); EnQueue(queue,1); int flag=0; for (int i=1;i<N;i++ ) { while(true) { int element; DeQueue(queue,element); cout<<element<<" "; if (element==1) { if (flag==0) { EnQueue(queue,1); EnQueue(queue,element+GetHead(queue)); flag++; }else { flag=0; EnQueue(queue,1); break; } }else EnQueue(queue,element+GetHead(queue)); } cout<<endl; } while (!EmptyQueue(queue)) { int element; DeQueue(queue,element); cout<<element<<" "; } cout<<endl; DestroyQueue(queue); }