循环队列打印杨辉三⾓
#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;
return 1;
}cstring转为int
}
int push(que &q,int val){
ar + 1 % maxsize == q.front)
{
printf("队列已满!\n");
return 0;
}
else
{
q.ar] = val;
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;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。