循环队列 输出杨辉三角
2016-04-01 23:53
555 查看
主要在于travelQueue函数的编写,一看应该就会明白
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> #define MAXQSIZE 100 using namespace std; typedef struct node { int data[MAXQSIZE]; int front,rear; } SqQueue; bool InitQueue(SqQueue &H)//创建队列 { H.front=0; H.rear=0; return 1; } bool EnQueue(SqQueue &H,int e)//添加队列元素 { if((H.rear+1)%MAXQSIZE==H.front) { printf("队列已满\n"); return 0; } H.data[H.rear]=e; H.rear=(H.rear+1)%MAXQSIZE; return 1; } int QueueLength(SqQueue &H)//返回队列长度 { return (H.rear-H.front+MAXQSIZE)%MAXQSIZE; } bool deleteEle(SqQueue &H,int &e)//删除队列元素 { if(H.front==H.rear) { cout<<"队列为空!"<<endl; return 0; } e=H.data[H.front]; H.front=(H.front+1)%MAXQSIZE; return 1; } int getHead(SqQueue H)//得到队列头元素 { return H.data[H.front]; } int QueueEmpty(SqQueue H)//判断队列是否为空 { if (H.front==H.rear) return 1; else return 0; } void travelQueue(SqQueue &H,int k)//遍历输出 { int a=0; int p=0; for(int i=1; i<=k; i++) { p=a; deleteEle(H,a); printf("%5d ",a); EnQueue(H,a+p); } EnQueue(H,a); cout<<endl; } int main() { int n; while(1) { printf("输入要输出的杨辉三角行数:\n");//n不要太大了 cin>>n; SqQueue S; InitQueue(S); EnQueue(S,1); for(int i=1; i<=n; i++) { travelQueue(S,i); } } return 0; }
相关文章推荐
- 二阶魔方
- sikulix图片自动化测试,与robotframework整合介绍
- JAVA类库/JAVA API
- Discuz论坛上出现报错
- ZK部署
- POJ 2253 Dijstra 最短路变形
- sass入门(一)
- Java读写txt或doc文件
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
- 理解C语言中指针的声明以及复杂声明的语法
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
- Atitit.获得向上向下左的右的邻居的方法 软键盘的设计..
- 字符串
- iOS之修改XCode新建文件自动生成注释
- Apache优化:修改最大并发连接数
- Java实现快速排序
- 用户管理命令
- acm_problem_1016
- Android Volley完全解析
- Atitit.css 规范 bem 项目中 CSS 的组织和管理