队列的应用之打印杨辉三角形

这篇具有很好参考价值的文章主要介绍了队列的应用之打印杨辉三角形。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

        利用队列打印杨辉三角形

特点:

        杨辉三角除第一行为两个1以外,从第二行开始,每一行的首尾都为1,中间位置的数为上一行中与之相邻的两个数之和,可以使用我们学过的队列问题来解决:

代码:

#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100

typedef int ElemType;
typedef struct{
	ElemType data[MaxSize];	    //队列的存储空间 
	int front,rear;            //队列的队头指针和队尾指针 
}Queue; 

//初始化队列
void Init_Queue(Queue *Q){
	Q->front=Q->rear=0;
} 

//判断队列是否为空
int Empty_Queue(Queue *Q){
	return Q->rear==Q->front;
} 

//进栈 
void In_Queue(Queue *Q,int e){
	if(Q->rear==MaxSize){
		return;
	}
	Q->data[Q->rear]=e;
	Q->rear+=1;
}

//出栈 
void Out_Queue(Queue *Q,int *e){
	if(Q->rear==Q->front){
		return;
	}
	*e=Q->data[Q->front];
	Q->front+=1;
}

//获取队头元素
void Front_Queue(Queue *Q,ElemType *x) {
	if(Empty_Queue(Q)){
		return;
	}else{
		*x=Q->data[Q->front];
	}
}

//打印杨辉三角
void yhsj(int m){
	Queue Q;
	int i,s,e,k;
	
	for(i=1;i<=m;i++){
		printf(" ");
	}
	
	printf("%-6d\n",1);
	Init_Queue(&Q);
	In_Queue(&Q,1);
	k=1;
	
	while(k<m){
		//每往下一行,其第一个数字都需要往左移动1个占位
		for(i=1;i<=m-k;i++){
			printf(" ");
		}
		do{
			Front_Queue(&Q,&e);
			if(e){
				printf("%-5d",e);
			}else{
				printf(" \n");
			}
			
		} while(e!=0);
		k++;
	}
	
	Out_Queue(&Q,&e);
	while(!Empty_Queue(&Q)){
		Out_Queue(&Q,&e); 
		printf("%-5d",e);
	}
} 

int main(){
	int number;
	printf("请输入杨辉三角打印的行数:");
	scanf("%d",&number);
	yhsj(number); 
	return 0;
}

 效果图:

利用队列打印杨辉三角形,C语言,数据结构,c语言,算法文章来源地址https://www.toymoban.com/news/detail-740669.html

到了这里,关于队列的应用之打印杨辉三角形的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c语言之杨辉三角打印前10行

       由上图分析可知杨辉三角外层都为1,第二行开始每一个元素都是上一行同一列及前一列的和。 第一步,先将外层输出为1,代码如下: 运行结果如下:  第二步,输出中间数值,代码如下:  运行结果如下: 最后整理输出格式,完整如下: 运行结果如下:        

    2024年02月12日
    浏览(46)
  • [C语言] [典例详解] 打印杨辉三角(找规律简单实现)

            用C语言打印杨辉三角。杨辉三角参考图如下:         于是不清楚杨辉三角的同学们可以上网查查,可以立刻知道它的相关推理归纳和公式总结。它的简介如下:  所以我们可以使用二项式的方法来写代码。但我下面要讲的是直接观察已有数据来写。       

    2024年02月01日
    浏览(42)
  • [C语言][典例详解]打印杨辉三角(找规律简单实现)

    目录 杨辉三角的相关知识 杨辉三角图:   杨辉三角的规律 在编程中实现 第一步 :我们先实现数字的打印,后面再加上空格构成三角形形状; ​编辑 1.首先我们可以直观的看出三角形的两个斜边都是1;所以我们先打印斜边的1(代码实现+分析+运行效果:) 2.打印中间的数

    2024年02月08日
    浏览(46)
  • C语言 打印图形(三角形)

    1.打印直角三角形 运行结果:   2.打印等边三角形 结果:   3.打印等腰三角形 结果如下:  

    2024年02月05日
    浏览(67)
  • C语言打印输出星号三角形案例讲解

    我们先看一个星号三角形的例图: 星号三角形的特点如下 以打印输出和例图一模一样的图案为例进行代码编写。  思路分析 1)先打印输出星星前没有空格的星号三角形 。  代码如下: 代码运行结果如下:  2)在原来代码的前提下,加上控制打印输出每一行第一个星星前空

    2024年02月11日
    浏览(54)
  • C数据结构与算法——队列 应用(C语言纯享版 迷宫)

    实验任务 (1) 掌握顺序循环队列及其C语言的表示; (2) 掌握入队、出队等基本算法的实现; (3) 掌握顺序循环队列的基本应用(求解迷宫通路)。 实验内容 使用C语言实现顺序循环队列的类型定义与算法函数; 编写main()函数并根据需要修改、补充相关的类型定义与函数,以实

    2024年02月15日
    浏览(56)
  • Java 实现杨辉三角形

    杨辉三角形,也被称为帕斯卡三角形,是一种由数字构成的三角形,它的特点是每个数字都是它上方两个数字的和。这个三角形是以法国数学家布莱兹·帕斯卡和中国数学家杨辉命名的。 杨辉三角形的原理可以通过以下步骤来解释: 第一行只有一个数字 1。 第二行有两个数字

    2024年02月15日
    浏览(34)
  • C语言打印各种三角形和菱形(包括星形菱形与空白格菱形)

    多重循环,也称嵌套循环,由一个外层循环和一个或多个内层循环组成。 for循环在C语言基础中占有重要地位,其中最能体现for的多重循环的就是打印各种形状的三角形,进而根据打印各种三角形的规律合并打印出菱形。 首先,我们来打印最简单的几个不同的三角形: 靠右直

    2024年02月04日
    浏览(50)
  • 蓝桥杯每日N题(杨辉三角形)

    要在这堆数字中找到 n 观察发现: (1)三角形左右两边的数字对称 我们只需要看 左半边 的数字即可 (2)画一条中轴线在中间 发现中轴线上的点的值为 C(2n,n) 找的时候,从内往外找,依次去枚举每一斜行。 为什么? 假设我们找到 n ,那外面的数字 必然是小于 n 的,所以我们从 内开

    2024年02月12日
    浏览(26)
  • 大学经典题目:Java输出杨辉三角形

    本节利用​ 过 Java 语 ​言中的流程控制语句,如条件语句、循环语句和跳转语句等知识输出一个指定行数的杨辉三角形。 杨辉三角形由数字进行排列,可以把它看作是一个数字表,其基本特性是两侧数值均为 1,其他位置的数值是其左上方数值与右上角数值之和。打印杨辉

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包