打印杨辉三角
来源:互联网 发布:大数据技术研究内容 编辑:程序博客网 时间:2024/04/27 20:17
代码没有考虑杨辉三角的输出格式,代码如下:
#include <stdio.h>
#include <stdlib.h>
#define OVERFLOW -2
#define INFEASIBLE -1
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
#define MAXQSIZE 10
typedef int QElemType;
struct SqQueue
...{
QElemType *base;
int front;
int rear;
};
int InitQueue(SqQueue *Q)
...{ // 构造一个空队列Q
Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q->base) // 存储分配失败
exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
int QueueEmpty(SqQueue Q)
...{ // 若队列Q为空队列,则返回TRUE,否则返回FALSE
if(Q.front==Q.rear) // 队列空的标志
return TRUE;
else
return FALSE;
}
int GetHead(SqQueue Q,QElemType *e)
...{ // 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR
if(Q.front==Q.rear) // 队列空
return ERROR;
*e=*(Q.base+Q.front);
return OK;
}
int EnQueue(SqQueue *Q,QElemType e)
...{ // 插入元素e为Q的新的队尾元素
if((Q->rear+1)%MAXQSIZE==Q->front) // 队列满
return ERROR;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXQSIZE;
return OK;
}
int DeQueue(SqQueue *Q,QElemType *e)
...{ // 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
if(Q->front==Q->rear) // 队列空
return ERROR;
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXQSIZE;
return OK;
}
void YangHuiTriangle(int N)
...{
SqQueue Q;
int n,i,temp,x;
InitQueue(&Q);
EnQueue(&Q,1); //第1行元素入队
for(n=2;n<=N;n++)
...{
EnQueue(&Q,1); //第n行第1个元素入队
for(i=1;i<=n-2;i++)
...{
DeQueue(&Q,&temp);
printf("%3d",temp);//打印第n-1行元素
GetHead(Q,&x);
temp=temp+x;
EnQueue(&Q,temp);
}
DeQueue(&Q,&x);
printf("%3d ",x);
EnQueue(&Q,1);
}
while(!QueueEmpty(Q))
...{
DeQueue(&Q,&temp);
printf("%3d",temp);
}
}
void main()
...{
int N;
printf("请输入要打印的列数:");
scanf("%d",&N);
YangHuiTriangle(N);
}
#include <stdlib.h>
#define OVERFLOW -2
#define INFEASIBLE -1
#define ERROR 0
#define OK 1
#define TRUE 1
#define FALSE 0
#define MAXQSIZE 10
typedef int QElemType;
struct SqQueue
...{
QElemType *base;
int front;
int rear;
};
int InitQueue(SqQueue *Q)
...{ // 构造一个空队列Q
Q->base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q->base) // 存储分配失败
exit(OVERFLOW);
Q->front=Q->rear=0;
return OK;
}
int QueueEmpty(SqQueue Q)
...{ // 若队列Q为空队列,则返回TRUE,否则返回FALSE
if(Q.front==Q.rear) // 队列空的标志
return TRUE;
else
return FALSE;
}
int GetHead(SqQueue Q,QElemType *e)
...{ // 若队列不空,则用e返回Q的队头元素,并返回OK,否则返回ERROR
if(Q.front==Q.rear) // 队列空
return ERROR;
*e=*(Q.base+Q.front);
return OK;
}
int EnQueue(SqQueue *Q,QElemType e)
...{ // 插入元素e为Q的新的队尾元素
if((Q->rear+1)%MAXQSIZE==Q->front) // 队列满
return ERROR;
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXQSIZE;
return OK;
}
int DeQueue(SqQueue *Q,QElemType *e)
...{ // 若队列不空,则删除Q的队头元素,用e返回其值,并返回OK;否则返回ERROR
if(Q->front==Q->rear) // 队列空
return ERROR;
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXQSIZE;
return OK;
}
void YangHuiTriangle(int N)
...{
SqQueue Q;
int n,i,temp,x;
InitQueue(&Q);
EnQueue(&Q,1); //第1行元素入队
for(n=2;n<=N;n++)
...{
EnQueue(&Q,1); //第n行第1个元素入队
for(i=1;i<=n-2;i++)
...{
DeQueue(&Q,&temp);
printf("%3d",temp);//打印第n-1行元素
GetHead(Q,&x);
temp=temp+x;
EnQueue(&Q,temp);
}
DeQueue(&Q,&x);
printf("%3d ",x);
EnQueue(&Q,1);
}
while(!QueueEmpty(Q))
...{
DeQueue(&Q,&temp);
printf("%3d",temp);
}
}
void main()
...{
int N;
printf("请输入要打印的列数:");
scanf("%d",&N);
YangHuiTriangle(N);
}
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印-杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 打印杨辉三角
- 杨辉三角打印
- 打印杨辉三角
- 杨辉三角打印
- 打印杨辉三角
- 打印杨辉三角
- 小人物的女人
- sendkeys使用(转载改版)
- 设置光标的闪动间隔
- Dojo学习笔记--dijit.Dialog
- 多文件上传
- 打印杨辉三角
- 键盘输入循环缓冲区问题
- Secret recipe inside Intel's latest competitor
- 从C/C++到C# (7)
- 视频捕捉全教程(vc+vfw)
- Linux的socket编程
- Cache失效太快的原因
- 多个表单和多个图片一起上传完美解决方案
- Delphi7学习(关于像控件数组一样的东西)