龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

队列实现打印杨辉三角

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
/*****************************队列实现打印杨辉三角******************************/ #include #include #include //#include #define TRUE 1 #define FALSE 0 #define Maxsize 100 typedef unsigned long int UINT; typedef strUCt { UINT data[

/*****************************队列实现打印杨辉三角******************************/

  #include

  #include

  #include

  //#include

  #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<

   for(i=1;i<=n;i++)

   {

   temp2=0;

for(j=1;j

   {

   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行,并将其全部入队

   }

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..."<

   getch();

}

  void SetNull(Sequeue *sq)

  

int Empty(Sequeue *sq)

  {

   if(sq->rear==sq->front)

   return TRUE;

   else

   return FALSE;

  }

  int Enqueue(Sequeue *sq,UINT x)

  {

   if(sq->front==(sq->rear+1)%Maxsize)

   {

   printf("队列已满! ");

   return FALSE;

   }

   else

   {

   sq->rear=(sq->rear+1)%Maxsize;

   sq->data[sq->rear]=x;

   return TRUE;

   }

  }

UINT Dequeue(Sequeue *sq)

  {

   if(Empty(sq))

   {

   printf("队列是空的! ");

   return FALSE;

   }

else

   {

   sq->front=(sq->front+1)%Maxsize;

   return (sq->data[sq->front]);

   }

  }

  

  

精彩图集

赞助商链接