用队列生成杨辉三角

/*用队列生成杨辉三角*/
#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);

}

posted on 2012-08-24 22:31  为梦飞翔  阅读(697)  评论(0编辑  收藏  举报

导航