自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我想让你也是一个开心果!

这个博客没有描述

  • 博客(33)
  • 收藏
  • 关注

原创 C语言数据结构——哈夫曼树

哈夫曼树又称最优二叉树它是树的带权路径长度 值最小的一棵二叉树,可用于构造最优编码,在信息传输、数据压缩等方面有着广泛的应用。哈夫曼树的相关概念路径:树中一个结点到另一个结点之间的分支序列路径长度:路径上分支的条数。结点的权:给结点赋予的数值。带权路径长度:结点的权值与该结点到树根间路径长度的乘积。树的带权路径长度:例子:从上面这三棵树中可以看出,他们有着共同的5个叶子,权值也都相同,但其WPL却不同,原因就是三棵树的结构不同。所以:对于权值相同的n个叶子所构造的二叉树结构不

2020-11-28 11:12:12 1281 2

原创 又为自己的懒惰找了借口

好几天没有更新了,今天原本计划写一篇树的三种存储方法,也是自己昨天刚学的,顺便巩固一下,这次我不打算边看视频边做记录,想要从书本出发,总结书上的知识点,但可能自己对这个编辑器还不太会用,在上传手机拍摄的照片时会出现各种bug,达不到自己想要的结果,拍的照片也感觉很模糊,自己看着都感觉很不舒服,写了一点之后我就全删了,就想着去看看别的博客是怎么写这部分内容的,然而,看了之后我彻底放弃写了,因为我觉得他们写得太好了,我如果复习时也会选择去看看大佬们的总结。[https://blog.csdn.net/weix

2020-11-21 21:49:32 925 4

原创 C语言数据结构——二叉树的顺序存储和二叉树的遍历

在学习顺序存储结构之前要知道:二叉树的结构是非线性的;每一个结点可有两个后继。对于这种一对多的层次结构,我们应该怎么样合理的存储下来呢?二叉树既有顺序存储又有链式存储,今天先学顺序存储。方法:使用一组连续的存储单元来存放二叉树的数据元素。使用结点之间的相对位置表示结点之间的关系。对于满二叉树和完全二叉树来说,可以按照对满二叉树结点连续编号,将各结点数据存放到一组连续的存储单元中,将二叉树中编号为i的结点存放在数组的第i号元素中。编号规则:根结点的编号为1;对于编号为i的结点,左孩子如果

2020-11-18 21:54:42 2563 2

原创 C语言的数据结构——二叉树

线性结构和树型结构的结构特点:线性结构:第一个元素无前驱最后一个元素无后继其他数据元素有且只有一个前驱和一个后继树型结构:根结点无前驱多个叶子结点无后继其他数据元素只有一个前驱和多个后继二叉树的性质:二叉树是n(n≥0)个结点的有限集合。当n=0时,称为空二叉树;当n>0时,该集合由一个根结点及两颗互不相交的,左子树和右子树的二叉树组成。由此推理二叉树的定义:1.每个结点的度都不大于2;2.每个结点的孩子结点次序不能任意颠倒。(即使只有一个子结点,也要区分是左子树还有

2020-11-15 19:50:47 356

原创 C语言数据结构——广义表

C语言数据结构中,广义表和数组一样,也是线性表的一种推广!广义表的定义:广义表 LS 为n(n≥0)个元素的有穷序列,记作:LS = (d1, d2, … dn)其中:di:或为原子项(为具体数值,用小写字母表示);或为子广义表(简称子表,用大写字母表示)。n:为广义表的长度;当n等于0时,广义表LS为空表。当LS不为空时,即(n≥1时),称d1为表头(head);剩余所有元素构成的子表(d2, d3, …dn)称为表尾(tail)。广义表的基本操作:1.计算表头函数head(LS),定义

2020-11-09 19:42:22 1614

原创 C语言数据结构——数组的定义与顺序存储

数组的定义:数组A为n(n>0)个元素的有穷序列,记作A =(a1,…,an)ai(1≤i≤n)或者全部为相同数据类型的原子项ei(即,具体数值);或者全部为具有相同定义的数组Bi。数组A =(a1,…,an)的维度(Dim)递归定义为:数组在定义时只需要给出每个维度的长度或者范围即可。在C语言中,定义N维数组除了要给出数据类型和数组名,还要依次给出数组每一位的长度L1,L2直到Ln。其中,L1为第一维的长度。例子如下:数组的顺序存储:由于数组中各元素定义完全相同,将数组元

2020-11-07 20:19:50 2058

原创 C语言数据结构——串(再学一次)

串的定义:是由零个或多个字符组成的有限序列。S=‘a1a1a3a4a5…an’(a≥0)其中:S为串名;n为串的个数;ai为串的元素。空串:空串是指长度n=0的串,它不包含任何字符。空格串:空格串是仅由一个或多个空格组成的串,长度大于等于1。子串:串中任意连续的字符组成的子序列为子串。主串:包含子串的串相应的称为主串。位置:字符在序列中的序号。子串在主串的位置则以子串的第一个字符在主串的位置来表示。串相等:两个串的长度相等,并且对应位置的字符都相等。串的基本操作:1.串插入操

2020-11-06 17:36:03 2322 7

原创 C语言数据结构——串

串的定义:串是由零个或多个字符串组成的有限序列,又叫字符串。串的长度:(1<=i<=n)可以是字母、数字或其他字符;串中字符的数目n称为串的长度。零个字符的串称为空串,他的长度为0。串可以是空串,即没有字符,直接由" "表示(注意里面没有空格哦!)。例如:a=‘BEI’b=‘JING’c=‘BEIJING’d=‘BEI JING’则a,b,c,d 它们的长度分别为3,4,7,8;并且a和b都是c和d的子串,a在c和d中的位置都是1,而b在C中的位置是4,在d中的位置则是5.

2020-11-04 20:39:19 717

原创 C语言数据结构——队列

队列的定义:1.队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。2.与栈相反,队列是一种先进先出的线性表。3.与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。队列的链式存储结构:队列可以用链表实现,也可以用顺序表实现。跟栈相反的是,栈一般我们用顺序表来实现,而队列我们常用链表来实现,简称为链队列。我们将队头指针指向链队列的头结点,而队尾指针指向终端结点。(头结点不是必要的)空队列时,front和rear都指向头结点。创建一个队列要完

2020-11-01 22:11:55 702

原创 解决python安装了第三方库,但在pycharm运行时仍提示没有安装

本篇解决两个问题1.在python中已经安装了第三方库,但是在pycharm(pycharm的编译器是前面说到的那个python)中运行时却提示你没有安装这个第三方库。2.在pycharm中安装第三方库方法。问题:在cmd命令下使用pip install ###这个命令安装了第三方库,并且已经显示安装成功。但是在pycharm中导入库并运行时,显示未安装第三方库。问题解决:1.打开pycharm2.点击左上角的File3.点击setting4.点击project,再点击projec

2020-10-29 18:05:13 24019 7

原创 栈的链式存储结构

栈因为只是栈顶来做插入和删除操作,所以比较好的方法就是将栈顶放在单链表的头部,栈顶指针和单链表的头指针合二为一。代码如下:进栈操作:出栈操作:逆波兰表达式:

2020-10-27 18:29:42 125

原创 C语言数据结构栈的操作(学习笔记)

一、清空一个栈。(将栈中的元素全部作废,但栈本身物理空间并不发生改变,不是销毁)所以只要将S->top的内容赋值为S->base即可!代码如下:二、销毁一个栈。(销毁一个栈是要释放掉该栈所占据的物理内存空间)代码如下:三、计算栈的当前容量。计算栈的当前容量就是计算栈中元素的个数,因此只要返回S.top-S.base即可。栈的当前容量与栈的最大容量不同,不是一个概念!代码如下:四、栈的实例分析:题目:利用栈的结构特点,将二进制转换为十进制数。(记住我们计算的时

2020-10-26 20:34:24 787 5

原创 队列的存储结构——链队列

链队列实际上还是通过链表来实现线性表的存储。如图所示:链队列的数据结构定义:链队列的初始化:链队列入队操作:链队列出队操作:

2020-10-24 21:06:09 231

原创 C语言数据结构——队列(1)

队列的概念:限定所有的插入操作在表的一端进行,而删除操作在表的另一端进行的线性表。其中允许进行插入操作的一端称为队尾(rear),允许进行删除操作的一端称为对头(front)。(就像我们吃饭排队一样,排在前面的买好走了之后就走了,这就相当于在队列的对头进行删除操作;后面来的人继续在后面排队,这就相当于在队列的队尾进行插入操作。)队列的存储方式:顺序存储和链式存储顺序存储对头指针指示队列中对头元素的前一个位置;队尾指针指示队列中队尾元素位置。**队列的顺序结构判队空和队满:队空条件

2020-10-22 17:29:29 192

原创 C语言数据结构与算法——栈(1)

栈的定义:作为一种限定性线性表,是将线性表的插入和删除运算限制为仅在表的一段进行。(一般在表尾进行)如下表:表中允许插入、删除擦欧总的一端称为栈顶(Top);表的另一端被称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的插入操作称为进栈或入栈。栈的删除操作称为出栈或退栈。栈的特点:后进先出(LIFO)栈的存储结构;顺序存储和链式存储顺序栈的C原因呢描述:栈的基本操作:双端栈双端栈就是栈的两边各有自己的栈顶和栈尾。分别可以在两端进行进栈和出战操作。注意:

2020-10-21 15:41:55 608

原创 C语言数据结构——双向链表

一、双向链表结点结构双向链表的循环链表:二、双向链表的插入操作:插入操作顺序很重要,千万不能写反!!三、双向链表的删除操作:今天线性表全部学完了,跟着小甲鱼老师敲了一个代码!!但是不太懂。。。。...

2020-10-18 19:34:09 227

原创 C语言数据结构循环链表(2)

循环链表的特点如何判断一个循环链表是否为空表?就是通过判断rear是否等于rear->next循环链表的特点是无需增加存储量,仅对链接方式稍作改变,即可使得表处理更加灵活。例题:代码如下:判断单链表中是否有环?有环的定义是,链表的尾结点指向了链表中的某个结点。如:判断单链表是否有环,主要有以下两种方法:代码太长了,我又头大了小甲鱼老师讲的真的好详细!!...

2020-10-17 17:19:58 171

原创 C语言数据结构循环链表

在此之前先回忆一下单链表。对于单链表,由于每个结点只存储了向后的指针,到了尾部标识就停止了向后链的操作。也就是说,按照这种方式,只能索引后继结点不能索引前驱结点。这样就带来了一个问题:如果不从头结点出发,就无法访问到全部结点。为此有一个解决办法:只需要将单链表中终端结点的指针端由空指针改为指向头结点,问题就解决了!!什么是循环列表?将单链表中终端结点的指针端由空指针改为指向头结点,就使得整个单链表形成了一个环,这种头尾相接的单链表成为单循环链表,简称循环链表。注意:这里并不是说循环链表一定

2020-10-15 19:59:00 281

原创 C语言结构体与共用体类型(2)

这几天都挺忙的,昨天没有抽出时间写学习笔记,只看没有写。今天想写时又不知道从哪开始写了,感觉和之前的接不上了!????我发现我写的所有博客中,没有技术含量的浏览量反而很高,然后纯学习笔记的浏览量都少的可怜!!!我反思了一下,应该是我的每一个知识点都没有在一个博客中讲完,而是分了好几个博客,另一个重要的原因是应该我的博客内容没有击中重点,条理不太清晰,说实话,当我发表完博客后,再去看大佬的博客,我自己都感觉我写的太垃圾了,如果是我,我也不想看第二遍!!!but!!!我还是会坚持写学习笔记,记录自己学习的历

2020-10-14 21:13:56 219 1

原创 C语言的结构体与共用体

C语言的结构体与共用体定义一个结构体的一般形式为:struct 结构名{成员列表};成员列表由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,形式为:类型说明符 成员名;看一个例子:定义结构类型变量有3种方法:(1)先声明结构体类型再定义变量名这种方法是先把结构类型定义了,然后再定义变量名,定义了student1和student2为struct student 类型的变量,即它们具有struct student类型的结构。(2)在声明类型

2020-10-12 19:01:25 685

原创 C语言数据结构(单链表)

单链表的整表创建——对于顺序存储结构的线性表的整表创建,我们可以用数组的初始化来直观理解。——而单链表和顺序存储结构就不一样了,它不像顺序存储结构这么集中,他的数据可以是分散在内存各个角落的,他的增长也是动态的。——对于每个单链表来说,他所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。——创建单链表的过程是一个动态生成链表的过程,从“空表”的初始状态起,依次创立各元素结点并逐个插入链表。单链表创建的算法思路如下:——声明一个结点P和计数器变量i;——初始化

2020-10-12 17:17:58 260 4

原创 C语言的预处理

昨天结束了C语言的指针,为什么没有继续写博客,因为我感觉自己到后面还是有点晕,理解的不是很清楚,等我再进修一下,再出一篇详细的C语言指针吧!今天来学C语言的预处理。在前面我们写代码时经常用到以**“#”**开头的代码,以“#”开头的就是预处理命令。如:#include<stdio.h>#define PI 3.1415926在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,因为它们通常被更早的处理,它们就称为预处理部分。无参宏的定义:无参宏的宏明后不带参数。定义的一般形

2020-10-11 17:44:31 226

原创 C语言数据结构线性表(2)

首先通过一段代码回顾一下前天学习的知识吧!该代码表示的是从线性表的顺序存储结构中删除一个元素。线性表的插入元素和删除元素同通过代码实现了,现在分析一下插入和删除的时间复杂度:最好的情况:插入和删除操作刚好要求在最后一个位置操作,因为不需要移动任何元素,所以此时的时间复杂度为O(1)。最坏的情况:如果要插入和删除的位置是第一个元素,那就意味着要移动所有的元素向后或向前,所以这个时间复杂度为O(n)其中n为线性表中元素的个数。至于平均情况,就取中间值O((n-1)/2)根据之前所说的计算时间复杂度

2020-10-11 10:07:58 174 1

原创 C语言数据结构——线性表

今天又是活力满满的一天!加油呀!今天开始学习线性表啦!一、何为线性表?线性表就像我们买票排队一样,具有线一样性质的结构。线性表的官方定义:由零个或多个数据元素组成的有限序列。二、线性表的特点:——元素之间有先来后到,具有一定的顺序。——若元素存在多个,(会牵扯到前驱后继的概念),则第一个元素无前驱,最后一个元素无后继,且其他元素都有且只有一个前驱和后继。——线性表强调的是有限的,无论计算机发展到多强大,它所处理的元素都是有限的。例子如下:所以线性表元素的个数n(n>=0)定义为线

2020-10-09 09:37:42 867 2

原创 C语言的时间复杂度与空间复杂度

昨天简单提到时间复杂度和空间复杂度,今天我们要详细的谈一谈时间复杂度和空间复杂度的计算方法。(所有的图都来自B站小甲鱼老师的课程)。首先要强调的是,研究算法的复杂度,侧重研究算法随着输入规模扩大增长量的一个抽象,而不是精确地知道需要执行多少次,只是为了比较我们使用哪一个算法更优。先来谈谈算法的好坏吧!例如:第一种算法循环执行了2n+2次;第二种算法循环执行了2次,那么这两种算法我们就可以把它当作其实就是n和1的差距,只需要知道哪种算法更好就行,不需要死算究竟差了多少次!!再例如下面这段程序是两层循环

2020-10-08 09:31:03 973 2

原创 C语言数据结构第一篇(绪论)

本人今天开始学习C语言的数据结构,每天会在这个平台记录自己的学习,一是可以作为督促自己每天坚持xue

2020-10-07 19:49:23 1764 5

原创 今天来谈一谈C语言的指针

今天来谈一谈C语言的指针一、何为指针?简单的说就是给你酒店的门牌号,你根据门牌号找到你住的房间。这个门牌号就相当于C语言的指针,给计算机指引,找到我们需要找到的东西。二、区分指针变量、普通变量和变量的指针从下面这个图中可以看出定义指针变量和普通变量的相同点是都需要定义数据类型,区别在于定义指针变量需要在指针名前面加一个* 。所以指针变量定义的形式为:*数据类型 指针名。int变量的指针需要用int 类型的指针存储,float变量的指针需要用float类型的指针存储,正如一个门牌号只能对应一个

2020-10-06 20:27:30 200 4

原创 C语言的二维数组简单分享!

C语言的二维数组上次简单谈了一下一维数组,时隔几天,再来说一说二维数组吧!这次数组的定义不在说明。直接说二维数组的使用方法吧!定义一个二维数组:int arr[3][3]在这里,同样的,int为这个二维数组的类型;arr为这个数组的名称;第一个[3]表示这个二维数组有3行,这3行的下标分别为0 1 2,第二个[3]表示这个二维数组有3列,这三列的下标分别是0 1 2。说这个的目的是说明【数组的下标都是从0开始】二维数组的赋值:第一种赋值方法:int arr[3][3]={1,2,3,4

2020-10-02 20:02:10 1986 9

原创 又是没有专业技术的一篇嘿嘿!

稍稍休息一下吧!现在是2020年9月29日19:57哇!打下前面的几个数字,心头忽然一紧,时间真的过的好快呀!2020年已经过了大半年了,我这半年都干了什么呀!好像一时说不上来。然而朋友圈被“2020,爱你爱你”等美好祝愿刷屏时好像还在昨天!为什么越长大越忙禄,忙碌的同时也在迷茫;为什么感觉时间过的越来越快?为什么感觉自己有学不完的东西,却又不知道从何下手?每天按部就班,在不上课的时间偶尔学会儿,每天过的挺开心的,但总感觉好像还有什么没有完成!此刻的我在一边思考,一边敲着键盘,耳机里放着《是想你的声音

2020-09-29 20:22:05 993 5

原创 今天我们就来谈谈c语言的一维数组吧!

今天来谈一谈一维数组吧!在C语言中,数组属于构造数据类型。根据数组中数据元素的不同,可以将数组分为数值数组、字符数组、指针数组、结构数组。从这里可以看出,数组中的元素是同一类型的元素。数组:具有相同类型的数据组成的序列,是有序集合。(注意:这里的有序集合不是值元素大小的排序)一维数组的定义方式:类型说明符 数组名 [常量表达式]例如:int a [5]int表示这是一个整型数组;a表示这个整型数组的数组名是a,数组名你可以随意,当然要利于编程和理解;5表示这个整型数组里有5个元素。数组定义时

2020-09-28 18:14:22 221 2

原创 2020-09-27日常分享!

C语言入门的朋友们,今日思考:看完这个程序,你知道这个程序是解决什么问题的吗?如有兴趣,欢迎留言!我明天会留言答案!(求大佬们如果看到这个博客,不要感到我很弱智啊啊啊!)...

2020-09-27 14:43:17 188 5

原创 c语言循环结构学习分享!

《C语言》循环控制结构学习分享c语言的学习我是跟着哔哩哔哩上面小甲鱼的课学的,非常不错,如有需要,强烈推荐!循环结构的特点:反复执行某个程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体循环结构主要有4中:(1)用goto语句和if语句构成循环;(不常用)(2)用while语句;(3)用do-while语句;(4)用for语句;这4种形式可以相互转化!!!下面我具体分析一下这四种结构的区别:(1)goto语句goto语句是一种无条件转移语句,使用格式为: g

2020-09-26 20:53:20 415

原创 2020-09-24

浅谈学习编程的方法本人是一个刚进入大二的学生,大一在疫情期间学习了c语言,但并没有学好,大一时一个机会进入了一个项目组,又接触了python。怎么说呢,目前阶段,这两种语言我还都在学习当中,更侧重c语言的学习,因为c语言更基础。虽然我学的不深,但我感觉自己找到了学习编程的方法,在这里就和大家交流一下吧!也希望各位大佬们指点!给予更多更好的学习方法!第一:学习编程是一个永无止境的钻研学习,从跟着敲代码到自己写代码,是一个不断学习,不断反复,不断纠错的一个过程。所以,大家在学...

2020-09-24 18:52:05 1796 10

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除