第三章:队列及其应用之一---输出杨辉三角
来源:互联网 发布:wap淘宝流量真实吗 编辑:程序博客网 时间:2024/06/03 18:46
#include <stdio.h>#include <string.h>#define N 100#define OK 1#define ERROR 0int f[N]={0,1,1,0};//使用一个队列输出n行杨辉三角;/*技巧: 为使第i行与第i+1行数据可以区分开,在两行之间放入一个数字0;*/void Print1(int n){ //自己的算法使用一个队列输出杨辉三角; int i,j,m; //n代表打印n行; printf("这是一个打印杨辉三角的函数:\n"); i=1;j=4; /*j=(j+1)%N;*/ while(n--) { do{ int t; if(i==0) t=N-1; else t=i-1; //防止当i=0时,i-1溢出; f[j]=f[i]+f[t]; if(f[j]) printf("%d ",f[j]); i=(i+1)%N;j=(j+1)%N; m=i-1; if(m==-1) m=N-1; }while(f[m]);//当f[m]为0时,计算当下并在后面补0,并退出这一重循环; f[j]=0; j=(j+1)%N; printf("\n"); }}typedef struct LinkList{ int *x; int base,top;}LinkList;LinkList L;void ChuShi(LinkList &L){ //初始化队列函数; L.x = new int[N]; L.top=L.base=0; printf("队列初始化完毕!\n");}void Jin(LinkList &L,int m){ //将数值m插入队尾; L.x[L.base]=m; L.base=(L.base+1)%N;}void Chu(LinkList &L,int &t){ //最前方的系数出队; t=L.x[L.top]; L.top=(L.top+1)%N;}void yanghui(int n){ //书上的方法,也是使用一个队列输出杨辉三角,但具体操作有所不同! /* 好处: 当你向队列中队尾加入元素的时候,只需要将值得多少传入函数中即可, 而不需要再去记录队尾的位置,这个在队列的结构体中自己有所体现! */ int i,j; Jin(L,1);Jin(L,1); int s=0,t; for(i=1;i<=n;i++) { Jin(L,0);//各行之间插入一个0表示区分; for(j=1;j<=i+2;j++) { //处理第i行的i+2个元素; Chu(L,t); Jin(L,s+t); s=t; if(j!=i+2) printf("%d ",s); } printf("\n"); }}int main(){ printf("请输入需要打印的杨辉三角的行数:\n"); int x; scanf("%d",&x); /*自己的方法: printf("1 1\n"); Print1(x); */ //书上的方法: ChuShi(L); yanghui(x); return 0;}
0 0
- 第三章:队列及其应用之一---输出杨辉三角
- 输出杨辉三角 队列小应用
- 队列的应用—输出杨辉三角
- C队列 输出杨辉三角
- 利用队列输出杨辉三角
- 循环队列 输出杨辉三角
- 队列在杨辉三角中的应用
- 【数据结构队列的应用】用队列打印杨辉三角
- 第三章:顺序栈及其应用之一---表达式求值
- 用循环队列输出直角杨辉三角
- 基于队列的简易杨辉三角等腰输出
- 利用循环队列打印输出杨辉三角
- 用C++队列模板实现杨辉三角的输出
- 队列--杨辉三角
- 输出杨辉三角
- 杨辉三角输出
- 输出杨辉三角
- 输出杨辉三角
- 第三章:顺序栈及其应用之二---括号匹配
- Kafka中的Message Delivary机制
- 第三章:顺序栈及其应用之三---数制转换
- 第三章:栈与队列算法设计题(2)
- 第三章:栈与队列算法设计题(4)
- 第三章:队列及其应用之一---输出杨辉三角
- 第三章:栈与队列算法设计题(6)
- 第三章:栈与队列算法设计题(10)
- 转载---KMP算法(Matrix67原创)
- 第四章:栈与队列算法设计题(1)
- 第四章:栈与队列算法设计题(6)
- 第四章:栈与队列算法设计题(10)
- P1029牛棚回声
- 第五章:树和二叉树之基本操作