自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 数据结构学习之路--玩转队列的内核知识(附C源码)

说起队列,不妨来想象一下,在我们的生活中总是存在一种现象:排队。它就可以看作是队列,比如:我们在排队打饭的时候,先排队的人先打饭,打完饭后便出队了,也就是说最先排队的人最先出队,最后排队的人最后出队。//定义//链式队列结点}QNode;//链式队列//队列的头//队列的尾}Queue;

2024-04-18 18:26:24 746 7

原创 数据结构学习之路--深入探索栈的核心要点(附C源码)

栈和队列均是常见的数据结构。栈的特点是后进先出(即 Last In First Out(LIFO) ),其增删查元素都在栈顶实现。而队列的特点是先进先出,增加元素在队尾实现,删除和查看元素都在队首实现。本期我们来详细学习实现栈的结构。//这里我们实现的是动态的栈//方便数据类型的替换//动态开辟数组int top;//栈顶//容量,方便扩容}ST;首先,定义动态数组 a,采用动态数组的方式主要是便于后期容量的扩充;然后,定义一个变量 top 用于标识栈顶位置;

2024-04-16 20:49:59 979 5

原创 数据结构学习之路--实现带头双向循环链表的详解(附C源码)

我们在上期内容中讲过,链表结构是多样化的。无头单向非循环链表和带头双向循环链表。前者已经在上篇博客()进行了全面的讲解,现在我们来认识并实现后者。带头双向循环链表:结构最复杂,一般用于单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。//定义}LTNode;分析:这里与单链表的定义不同,带头双向循环链表要定义两个指针:前驱指针prev和后继指针next。

2024-04-13 15:21:05 783 6

原创 数据结构学习之路--一网打尽链表的相关操作(附C源码)

概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑结构是通过链表中的指针链接次序来实现的。整个链表的存取必须从指针开始进行,头指针指示链表中第一个结点(即第一个数据元素的存储映像,也称首元结点)的存储位置。同时,由于最后一个数据元素没有直接后继,则单链表中最后一个结点的指针为空(NULL)。链表的逻辑结构和物理结构是不一致的。

2024-04-10 00:01:08 1257 11

原创 数据结构学习之路--全面破解顺序表的奥秘(附C源码)

我们知道,线性表、栈、队列、串和数组都属于线性结构。线性结构的基本特点是除首元素没有直接前驱,尾元素没有直接后继之外,其它每个数据元素都有一个前驱和后继。线性表的数据元素虽然不同,但同一线性表中的元素必定具有相同的属性,即数千同一数据对象,相邻数据元素之间存在序偶关系。顾名思义,线性表在逻辑上是线性结构,也就是说是连续的一条直线。但在物理结构上并不一定是连续的,线性表在物理上存储时,一般以数组和链式结构的形式存储。把线性表中元素的个数n(n>=0)定义为线性表的长度,当n=0时称为空表。

2024-04-08 22:37:37 827 14

原创 数据结构学习之路--算法的时间复杂度与空间复杂度(精讲)

时间复杂度是衡量一个算法的好坏,也是算法题的重中之重。但是很多初学者认为时间复杂度不好理解,对于其复杂程序的估算无从下手。那么本篇文章将从简单到复杂来介绍时间复杂度的计算方法,希望给迷茫的你们指明一条前进的方向。在计算机科学中,算法的时间复杂度是一个函数。一个算法执行所耗费的时间,从理论上说,是不能被算出来的,只有你把你的程序放在机器上跑起来,才能知道。但是若每个算法都需要上机测试,会很麻烦,所以才有了时间复杂度的分析方式。一个算法中的语句执行次数称为语句(时间)频度,记作T(n),这里的n是问题的规模。

2024-03-26 20:51:00 727 11

原创 数据结构学习之路--谈谈本人对数据结构的认识及理解

不瞒你们说,我在学数据结构之前,潜意识里总是觉得数据结构的知识似乎没什么太大用处,在我们日常的编程中,除了特意去想要实现数据结构的相关算法,基本涉及不到有用到数据结构知识去解决问题的地方。其实不然,数据结构是软件开发中最基础最重要的理论基础。数据结构:即人们抽象出来的描述现实世界实体的数学模型(非数值计算)及其的相关操作(运算),在计算机上的表示和实现。数据结构就是指按一定的逻辑结构组成的一批数据,使用某种存储将这批数据存储于计算机中,并在这些数据上定义了一个运算集合。三、数据类型。

2024-03-24 11:25:44 1023 13

原创 C语言进阶之路--精讲深入剖析指针(从入门到全面)

想要了解指针,多多少少会出现一些比较复杂的类型,所以在这里先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,它们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我大概总结了一下相应的原则:从变量名处起,根据运算符优先级结合,一步一步进行分析。

2024-03-21 00:01:04 961 11

原创 C语言进阶之路--详解通讯录的实现(静态版+动态版+文件版)

嗨嗨大家~我们又见面啦!今天为大家带来的内容是:保姆级通讯录的实现,包括了三个版本(静态、动态,文件版)。在写代码之前,我们必须要思考:实现通讯录的步骤及其功能是怎样的。想象一下,平时在手机上关于通讯录的功能分别有:添加联系人,删除联系人,查询联系人信息,修改联系人信息,显示通讯录,通讯录名字的排序等等。那么现在我们就正式开始吧!

2024-03-17 00:15:32 928 10

原创 C语言进阶之路--深入文件操作(详解版)

通俗来讲,存放在磁盘上的文件便可以定义为文件。但在程序设计中,我们一般所说的文件有两种:程序文件和数据文件(从文件功能的角度来进行分类)。

2024-03-14 00:05:56 914 11

原创 C语言进阶之路--动态内存管理(精髓版)

C语言提供了一个动态内存开辟的函数:malloc这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指针;如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查;返回值的类型是void*,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定;如果参数size为0,malloc的行为是标准是未定义的,取决于编译器;int main()//动态内存开辟return 1;//使用。

2024-03-10 23:38:24 921 7

原创 C语言进阶之路--自定义类型:结构体、枚举与联合(精通版)

/定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//初始化:定义变量的同时赋初值struct Stu//类型声明//名字int age;//年龄//初始化//嵌套初始化:int data;//结构体嵌套初始化//结构体嵌套enum DayMon,Tues,Wed,Thur,Fri,Sat,Sunint main(){ } 中的内容是枚举类型的可能取值,也叫枚举常量。

2024-03-08 00:02:27 1032 10

原创 C语言进阶之路--剖析数据在内存中的存储(详细版)

char //字符型(1 byte)short //短整型(2 byte)int //整型(4 byte)long //长整型(4/8 byte)long long //更长整型(8 byte)float //单精度浮点型(4 byte)double //双精度浮点型(8 byte)由于每一种数据类型的大小不同,这就决定了它所存空间的数据范围的不同,如char和int所存储的数据范围不相同,那么具体能存储多少,又是以什么形式进行存储的呢?相信大家看完本篇内容,就会对此有了更加深入的认识。

2024-01-04 00:13:23 1092 3

空空如也

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

TA关注的人

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