WEB开发网
开发学院软件开发C++ 队列实现打印杨辉三角 阅读

队列实现打印杨辉三角

 2008-03-08 12:25:33 来源:WEB开发网   
核心提示:/*队列实现打印杨辉三角**/#include <stdio.h>#include <conio.h>#include <iostream.h>//#include <stdlib.h>#define TRUE 1#define FALSE 0#define Maxsiz
/*****************************队列实现打印杨辉三角******************************/
#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(); }
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]);
 }
}

Tags:队列 实现 打印

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接