队列实现打印杨辉三角
/*****************************队列实现打印杨辉三角******************************/
#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]); } }
- 上一篇:对一个问题的突破!
- 下一篇:一个简单的口令程序!