#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<iomanip>
#include<queue>
typedef long long ll;
const int inf = 0x3f3f3f3f;
using namespace std;
#define maxsize 600
typedef struct{
int *base;
int front,rear;
}que;
int init(que &q){
q.base = (int *)malloc(sizeof(int) * maxsize);
if(!q.base)
{
printf("分配内存失败!\n");
return 0;
}
else
{
q.front = 0;
q.rear = q.front;
return 1;
}
}
int push(que &q,int val){
if(q.rear + 1 % maxsize == q.front)
{
printf("队列已满!\n");
return 0;
}
else
{
q.base[q.rear] = val;
q.rear = (q.rear + 1) % maxsize;
return 1;
}
}
int pop(que &q,int &val){
if(q.front == q.rear)
{
printf("队列为空!\n");
return 0;
}
else
{
val = q.base[q.front];
q.front = (1 + q.front) % maxsize;
return 1;
}
}
int main(){
que q;
init(q);
int n,temp,now;
scanf("%d",&n);
push(q,1); //将第一行的1入队
for(int i = 2;i <= n;i++) //从第二行到第n行的入队操作,以及打印第i - 1行的所有元素
{
push(q,1); //每一行的第一个元素
for(int j = 1;j <= i - 2;j++) //求第2个到i - 1个元素的值
{
pop(q,temp);
printf("%-3d ",temp); //打印上一行的元素 执行i - 2次循环 而上一行有i - 1个元素
now = q.base[q.front];
push(q,now + temp);
}
pop(q,temp);
printf("%-3d\n",temp); //打印上一行的最后一个元素
push(q,1); //将本行的最后一个元素入队
}
for(int i = 1;i <= n;i++) //打印第n行元素
{
pop(q,temp);
printf("%-3d ",temp);
}
printf("\n");
free(q.base);
return 0;
}
循环队列打印杨辉三角
原创
©著作权归作者所有:来自51CTO博客作者wx5eb923c84f0f6的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Canvas与艺术】绘制斜置黄色三角biohazard标志
使用Html5/Canvas绘制斜置黄色三角biohazard标志。
canvas biohazard -
【Canvas与艺术】绘制黄色三角辐射警示标志
使用Html5/Canvas绘制黄色三角电离辐射警示标志
canvas 辐射 radiation -
打印“杨辉三角”
C语言完成“杨辉三角”
杨辉三角 C语言 -
队列练习——杨辉三角
杨辉三角杨辉三角,是二项式系数在三角形中的一种几何排列。C++代码实现/*队列————杨辉三角
杨辉三角 链队 队列 数据结构 C++ -
C++打印杨辉三角
C++打印杨辉三角!
ios #include i++