利用队列实现杨辉三角的打印
2010-06-25 15:40
991 查看
#define MAXSIZE 50/*利用队列实现杨辉三角的打印!2009/08/23*/ #define FALSE 0 #define TRUE 1 typedef int QueueElemType; typedef struct { QueueElemType element[MAXSIZE]; int front; int rear; }SeqQueue; void InitQueue(SeqQueue *Q)//初始化 { Q->front=Q->rear=0; } int EnterQueue(SeqQueue *Q,QueueElemType x)//入队 { if((Q->rear+1)%MAXSIZE==Q->front) return FALSE; Q->element[Q->rear]=x; Q->rear=(Q->rear+1)%MAXSIZE; return TRUE; } int DelQueue(SeqQueue *Q,QueueElemType *x)//出对 { if(Q->front==Q->rear) return FALSE; *x=Q->element[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return TRUE; } int GetHead(SeqQueue *Q,QueueElemType *x)//取对头元素 { if(Q->front==Q->rear) return FALSE; *x=Q->element[Q->front]; return TRUE; } int IsEmpty(SeqQueue *Q) { if(Q->rear==Q->front) return TRUE; else return FALSE; } void YangHuiTriangle(int N) { int n,i,x,temp; SeqQueue Q; InitQueue(&Q); EnterQueue(&Q,1);//第一行元素入队 for(n=2;n<=N;n++) { EnterQueue(&Q,1); for(i=1;i<=n-2;i++) { DelQueue(&Q,&temp); printf("%d ",temp); GetHead(&Q,&x); temp=temp+x; EnterQueue(&Q,temp); } DelQueue(&Q,&x); printf("%d ",x); EnterQueue(&Q,1); printf("/n"); } while(!IsEmpty(&Q)) { DelQueue(&Q,&x); printf("%d ",x); } } void main() { int N; printf("/nplease input the N:"); scanf("%d",&N); YangHuiTriangle(N); }
相关文章推荐
- 利用循环队列实现杨辉三角的打印
- 利用循环队列打印输出杨辉三角
- C++编写利用数据结构中队列(Queue)打印出用户所指定长度的杨辉三角
- 队列实现杨辉三角打印
- 队列实现 杨辉三角的打印
- 输出打印杨辉三角(队列实现及数组递推实现)
- 【数据结构队列的应用】用队列打印杨辉三角
- 利用两个队列实现一个栈
- 利用两个栈实现队列的入队出队
- 利用System V消息队列实现回射客户/服务器
- 利用优先级队列实现事件驱动模拟
- 利用XML实现通用WEB报表打印(实现篇)
- 【iOS录音与播放】实现利用音频队列,通过缓存进行对声音的采集与播放
- 《算法》第一章——利用两个栈实现一个队列的push和pop操作
- 利用XML实现通用WEB报表打印(实现篇) 卢彦
- 利用XML实现通用WEB报表打印(实现篇)转载
- Java利用Redis实现消息队列
- 利用JS实现打印
- 顺序队列(循环队列)+链式队列+打印杨辉三角
- 两个栈实现一个队列——C++ 利用STL 栈stack实现