杨辉三角

#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int QElemType;
typedef struct QNode{
    QElemType data;
    QNode *next;
}QNode,*QueuePtr;

typedef struct{
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;

Status InitQueue(LinkQueue &Q){
     Q.front=new QNode;
     if(Q.front==NULL)
         return OVERFLOW;
     Q.front->next;
     Q.rear=Q.front;
     return OK;
}

Status EnQueue(LinkQueue &Q,QElemType e){
      QNode *p=new QNode;//插入元素e为Q的新的队尾元素 
      if(p==NULL)
         return OVERFLOW; //存储分配失败 
     p->data=e;
     p->next=NULL;
     Q.rear->next=p;
     Q.rear=p;//修改队尾指针 
     return OK;
}

Status DeQueue(LinkQueue &Q,QElemType &e){
         if(Q.front==Q.rear)//删除Q的队头元素,用e返回其值,并返回OK 
              return ERROR; //若队列为空,则返回ERROR 
         QNode *p=Q.front->next;//p指向队头元素 
         e=p->data;//e保存队头元素的值 
         Q.front->next=p->next;//修改头指针 
         if(Q.rear==p)
             Q.rear=Q.front;//最后一个元素被删,队尾指针指向头结点 
         delete p;
         return OK;
}
void YangHui(QElemType num){
    int i,j,k,t,s;
    LinkQueue p;
    InitQueue(p);
    EnQueue(p,1);
    EnQueue(p,1);
    s=0;
    for(i=1;i<=num;i++){
         cout<<endl;
         EnQueue(p,0);
         for(j=1;j<=i+2;j++){
             DeQueue(p,t);
             EnQueue(p,s+t);
             s=t;
             if(j!=i+2)
                printf("%4d",s);
         }
    }
}
int main(){
   int N;
   cout<<"请输入你所要打印的行数:"<<endl;
   cin>>N;
   YangHui(N);
   return 0;
}

posted @   wojiaohuangyu  阅读(6)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示