数据结构:使用栈和队列相关知识打印杨辉三角
来源:互联网 发布:日上免税店 mac 编辑:程序博客网 时间:2024/06/15 18:36
本文利用数据结构队列知识编程实现打印杨辉三角,源代码如下:
#include <stdio.h>
#define MAXSIZE 50
#define N 10
typedef int QueueElementType;
typedef struct
{
QueueElementType element[MAXSIZE];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue *Q)
{
Q->front = Q->rear = 0;
}
void EnterQueue(SeqQueue *Q,QueueElementType x)
{
if ((Q->rear + 1) %MAXSIZE == Q->front)
{
printf("队列已满不能入队\n");
return;
}
Q->element[Q->rear] =x;
Q->rear = (Q->rear + 1) %MAXSIZE;
}
void printQ(SeqQueueQ)
{
int i;
i = Q.front;
while (i != Q.rear)
{
if (i == MAXSIZE)
{
i = 0;
}
printf(" %d ", Q.element[i]);
i++;
}
printf("\n");
}
void DeleteQueue(SeqQueue *Q,QueueElementType *x)
{
if (Q->front ==Q->rear)
{
printf("队列为空不能出队\n");
return;
}
*x = Q->element[Q->front];
Q->front = (Q->front + 1) %MAXSIZE;
}
void GetHead(SeqQueue *Q,QueueElementType *x)
{
if (Q->front ==Q->rear)
{
printf("队列为空不能取值\n");
return;
}
*x = Q->element[Q->front];
}
void main()
{
SeqQueue Q;
QueueElementType x, temp;
int n;
int i;
InitQueue(&Q);
EnterQueue(&Q, 1);//第一行元素入队
for (n = 2; n <= N; n++)//产生第n行元素并入队,同时打印第n-1行的元素
{
EnterQueue(&Q, 1);//第n行的第一个元素入队
for (i = 1; i <= n - 2; i++)//利用队中第n-1行元素产生第n行的中间n-2个元素并入队
{
DeleteQueue(&Q, &temp);
printf(" %d ", temp);//打印第n-1行的元素
GetHead(&Q, &x);
temp = temp + x;//利用队中第n-1行元素产生第n行元素
EnterQueue(&Q, temp);
}
DeleteQueue(&Q, &x);
printf(" %d ", x);//打印第n-1行的最后一个元素
EnterQueue(&Q, 1);//第n行的最后一个元素入队
printf("\n");
}
while (Q.front != Q.rear)//打印最后一行元素
{
DeleteQueue(&Q, &x);
printf(" %d ", x);
}
}
本段代码利用数据结构打印出杨辉三角前10行,如果想要打印其他行数只需将代码最开始的宏定义 #define N 10 中的10改为其他值即可。
- 数据结构:使用栈和队列相关知识打印杨辉三角
- 【数据结构队列的应用】用队列打印杨辉三角
- 数据结构循环队列以及打印杨辉三角
- 用循环队列实现打印杨辉三角(数据结构)
- 数据结构实验八——队列打印杨辉三角
- 数据结构知识整理-递归循环打印杨辉三角
- 队列实现杨辉三角打印
- 队列实现 杨辉三角的打印
- 用队列打印杨辉三角
- 用队列打印杨辉三角
- 循环队列打印杨辉三角
- 用 队列 打印 杨辉三角
- 数据结构学习之打印杨辉三角
- 数据结构循环队列实现杨辉三角
- 队列基础 (用队列打印杨辉三角)
- 利用队列实现杨辉三角的打印
- 队列应用之打印杨辉三角_legend
- 打印杨辉三角(STL版队列)
- Javascript:字面量和变量
- 19个练习黑客技术的在线网站
- ac自动机简介及补题二
- 用np.maximum实现relu函数
- 欢迎使用CSDN-markdown编辑器
- 数据结构:使用栈和队列相关知识打印杨辉三角
- c++类型推导
- JSTL标准标签库
- 欢迎使用CSDN-markdown编辑器
- javascript渲染机制&运行机制&页面性能
- uva1593代码对齐
- QT中MySql数据库从无到有创建过程
- 线段树模板题(结构体&一维数组)(区间最值,求和)
- css-文本