当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

队列实现打印杨辉三角

    /*****************************队列实现打印杨辉三角******************************/
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    //#include <stdlib.h>


    #define TRUE 1
    #define FALSE 0
    #define Maxsize 100


    typedef unsigned long int UINT;
    typedef strUCt
    {
     UINT data[Maxsize];
     int front,rear;
    }Sequeue;//顺序队列的类型
    Sequeue *Sq,mysq;
    void SetNull(Sequeue *sq);//置队空
    int Empty(Sequeue *sq);//判队空
    int Enqueue(Sequeue *sq,UINT x);//入队
    UINT Dequeue(Sequeue *sq);//出队

    void main(void)
    {
     UINT n;//杨辉三角的行数(阶数)
     UINT i,j;//i控制行数循环,j为每行的输出个数控制变量
     UINT temp1,temp2;
     Sq=&mysq;
    Redo:
     SetNull(Sq);
     cout<<" 请输入杨辉三角的阶数n:";
     cin>>n;
     Enqueue(Sq,1);
     cout<<endl;
     for(i=1;i<=n;i++)
     {
      temp2=0;

      for(j=1;j<i;j++)//第i行有i列,此循环打印i-1列,每一行的第一个和最后一个都是1
      {
       temp1=Dequeue(Sq);
       printf("%-5lu",temp1);
       temp2+=temp1;
       Enqueue(Sq,temp2);
       temp2=temp1;

      }
      Dequeue(Sq);//最后一个元素:1出队
      printf("1 ");
      temp2++;//temp2+=1;1即是最后一个元素
      Enqueue(Sq,temp2);
      Enqueue(Sq,1);//最后一个元素1入队
      //_sleep(100);
     //i行有i个元素,j控制打印的个数j=1;j<i;j++,i行打印i个
     //打印第i行,并将其全部入队
     }

     printf("Do you want to continue? Y or N? ");
     int response;
     response=getche();
     if(response=='Y'response=='y')
      goto Redo;
     else
      cout<<" Press any key to exit..."<<endl;
     getch();

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接