数据结构——杨辉三角
又是debug的一天······无语
感想:别人的代码可不能信手拈来,使用的编译环境不一样会有大问题。以后一定要养成在c语言环境下初始化函数附带上返回值的好习惯,为啥我的init传的同样是指针,没有返回就不能初始化成功呢??~?~
再吐槽一点,即使是教材,同样会出错。网上的代码很多都是相互借鉴得来的。因此代码一定要自己写,自己debug出来的才会真正成为自己的东西。通过本例,我才了解到为何不使用指针也可以成为循环队列,就是因为front和rear这两个int类型的变量加1对数组长度取余的操作才因此实现。
附上代码
#include <stdio.h>
#include <stdlib.h>
#define size 100
typedef struct queue{
int data[size];
int front;
int rear;
}queue;
//初始化
queue *init(queue*q){
q=(queue*)malloc(sizeof(queue));
if(q==NULL)printf("内存分配失败");
q->front=q->rear=0;
return q;
}
//判断队列是否为空
int is_empty(queue*q){
return q->front==q->rear;
}
//入队列
//rear,front无法初始化
void enq(queue*q,int e){
if((q->rear+1)%size==q->front){
printf("队列已满");
}
else{
q->data[q->rear]=e;
q->rear=(q->rear+1)%size;//+1取余的操作就完成了队列的循环
}
}
//出队
int deq(queue*q){
if(q->front==q->rear){
printf("队列为空");
}
int e;
e=q->data[q->front];
q->front=(q->front+1)%size;
return e;
}
//取头元素的操作
int gethead(queue*q){
int e=0;
e=q->data[q->front];
}
//杨辉三角的实现
void ractangle(queue*q,int n){
enq(q,1);
int i,j,s,t=0;
for(i=1;i<n+1;i++){//大循环,用以控制循环到杨辉三角第几层
enq(q,0);
for(j=0;j<i;j++){//小循环,用以完成当前层杨辉三角元素的计算
t=deq(q);
s=gethead(q);
s+=t;
enq(q,s);
}
}
}
//打印队列
void printl(queue*q){
int e=0;
while(!is_empty(q)){
e=deq(q);
if(e==0)continue;//去0操作
printf("%d ",e);
}
}
void main(){
int n=0;
scanf("%d",&n);
if(n>=size){
printf("队列已满");
return;
}
queue *q;
q=init(q);
//初始化的q传不进来?
//init需要返回q?intresting
ractangle(q,n);
printl(q);
return;
}
数据结构——杨辉三角相关推荐
- 数据结构——c语言 递归输出杨辉三角
戳这里还有其他数据结构的题目噢 数据结构--部分题目和代码实现目录_起当风萧的博客-CSDN博客 设计并验证输出杨辉三角的递归算法. (1)杨辉三角,又称贾宪三角形.帕斯卡三角形,是二项式系数在三角形 ...
- 数据结构--队列Queue--打印杨辉三角
杨辉三角大家很熟悉,不做介绍了,第n行的首末两元素均为1,中间n-2个元素由n-1行相邻两元素相加得到. 将第1行数据入队(1) -------队列表示(队头,- 队尾)------- 第2行数据1入 ...
- java数据结构队列杨辉三角_数据结构之队列——输出杨辉三角形
定义 队列是一种操作受限的线性表,只允许在一端进行插入,另一端进行删除.插入的一端称为队尾,删除的一端称为队头,由于这样的限制,所以队列具有先进先出的特性,因此队列也是一种先进先出的线性表. 顺序存储 ...
- 杨辉三角循环队列实现(数据结构c语言版)
[问题描述]杨辉三角形是由[(a+b)]n二项式展开的各项系数形成的,当n=0,系数为1,生成第一行的元素:当a=1,a+b的各项系数组成第二行的元素:当n=2,a2+2ab+b^2的各项系数组成第三 ...
- 数据结构c语言程序杨辉三角,杨辉三角 --- C语言程序
杨辉三角 --- C语言程序 1.前言 最近在逛博客的时候发现一个特别有意思的三角形 然后便编写了下来. 它呢就是杨辉三角,也作为我的首篇博客吧 2.旅程开始 此处为网上所找到的公式以及各种概 ...
- 数据结构之杨辉三角实现
(1)形如 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 称为杨辉三角 详细的概念参考 ...
- 数据结构之ArrayList实现杨辉三角
代码主要思想 我们把杨辉三角看作一个直角三角形如图: 从右边的图我们看出来我们需要一个List<List>类型的对象,其中存储List>对象,达到效果,很容易看出来中间数字的求法,由 ...
- 【数据结构(C++)】用链队列计算杨辉三角
目录 第一节 概述 第二节 开源代码 第一节 概述 杨辉三角是二项式系数在三角形中的一种几何排列,是中国古代数学的杰出研究成果之一.它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出 ...
- 【数据结构】ArrayList的具体使用(杨辉三角、扑克牌游戏)
目录 1.了解集合的框架 2.了解ArrayList类 2.1.认识ArrayList类当中的属性 2.1.认识ArrayList类库当中的方法 2.1.1.了解构造方法 2.2.ArrayList类 ...
最新文章
- Java项目构建打包规范,jenkins2.121.1构建java项目环境,一键打包发布
- 计算机机房规范管理,计算机中心机房建设及管理规范.doc
- Python_基础_5
- 如何实现REST资源的输入验证
- htmlplay前端编辑器下载_2019年最好用的代码编辑器推荐
- twisted系列教程十六–twisted守护进程
- 开发过程中任何一个时刻,只关注解决当前面临的问题。
- 这篇带你深入理解SpringBoot中的自动装配(好文精读)
- 32乘法运算_算术运算指令
- 材料的构成 —— 塑料
- 阿玛尼搜索引擎收录_被全网黑的阿玛尼权利,我一个大干皮咋用的挺好?
- 对灰色按钮克星的屏蔽
- 支付宝 java 签名_支付宝APP支付(Java后台生成签名具体步骤)
- 扫描件如何转换成pdf及word文档?
- 桌面虚拟化中VDI和IDV的五大区别
- 干货 | 节省55%测试时间,携程酒店比对平台介绍
- 30多种免费的高级WordPress主题,适用于令人惊叹的照片,教育和房地产网站
- 项管行知03--项目类型
- syskey (win7启动密码)加密和破解方法
- 如何将MAC的文件存储至NAS网络存储?
热门文章
- 计算机控制面板的知识,职称计算机WindowsXP知识点:控制面板
- ARM之汇编学习---如何编写ARM汇编程序
- 小米4什么时候发布?
- python 初始化数组_python3 数组(列表)初始化
- 来自工作表单元格的Excel按钮文本
- 中国10个“最”汉字的字
- 【饭谈】ChatGpt的崛起下,测试行业恐成最后赢家
- mysql executequery返回值_statement.executeQuery(sql)
- 魔兽世界怀旧服哪个服务器bl最多,魔兽世界怀旧服选择什么服务器最好 各服务器优缺点汇总...
- 程序员称子弹短信存在抄袭,罗永浩回复:感谢知乎蠢萌科学家们!