
数据结构与算法(C语言班)
以C语言实现数据结构
晨曦学习日记
在校学习linux系统编程的本科生
展开
-
C语言数据结构:双向链表的操作实现
双向链表(Doubly Linked List)是一种常见的线性数据结构。与单链表不同,双向链表的每个节点不仅包含指向下一个节点的指针(对双向链表的操作有:头插法,尾插法,清空链表,遍历链表,得到尾结点,特定位置插入,特定位置删除。这种结构使得双向链表可以从两个方向遍历,操作更加灵活。:由于有前驱指针,可以更方便地操作节点的前驱和后继。接下来我们通过代码来看对双向链表的操作。),还包含一个指向前一个节点的指针(:每个节点需要额外存储一个前驱指针。:可以从头到尾或从尾到头遍历链表。原创 2025-03-15 15:27:05 · 138 阅读 · 0 评论 -
C语言数据结构:栈的操作实现
2、进制转换(直接取余得到的顺序和结果相反,通过栈来调转)本文使用顺序栈,实现二进制转换。1、中缀表达式转后缀表达式。栈(Stack)是一种遵循。3、款项金额转中文大写。4、编辑器中括号的匹配。原创 2025-03-21 20:34:51 · 204 阅读 · 0 评论 -
力扣题解:142. 环形链表 II
循环链表是一种特殊类型的链表,其尾节点的指针指向头节点,形成一个闭环。4).快指针在一圈内追上慢指针:如果慢指针走一圈,快指针则走了两圈,在这两圈内,快指针一定会与慢指针相遇,所以快指针在一圈内追上慢指针。2).如果有环,则快指针先进入环,慢指针后进入环, 如果无环,则fast会走出循环判断条件,返回空。3).有环时,慢指针进入环后,快指针相对慢指针每次移动一格,也就是快指针会追上慢指针。1).我们声明两个指针,快指针每次向链表下方走两步,慢指针则走一步;入口距离=(n-1)圈长+相遇点到入口的距离。原创 2025-04-09 21:41:33 · 374 阅读 · 0 评论 -
C语言数据结构:队列的操作实现
队列是一种常见的数据结构,遵循先进先出(FIFO)原则,即最先进入的元素最先被移除。它类似于现实生活中的排队,先到的人先接受服务。原创 2025-03-28 20:55:33 · 273 阅读 · 0 评论 -
C语言数据结构:链表的操作实现
2、寻找链表的中点(也可以找到其他比例的点去分割链表):快指针一次向尾部走两步,慢指针走一步,直到指向NULL,这时慢指针就会指向中间结点(偶数链表会指向中间的上一个,奇数会指向中间值)。本文包括链表的基本操作:初始化、头插法、尾插法、遍历打印、获取尾结点地址、指定位置添加和删除结点、获取链表长度、得到尾指针、释放链表、获得倒数第K个结点的值(快慢指针法)、翻转链表。1.找到倒数第K个值:快指针先走K步,循环向链表尾部走,直到指向NULL,这时慢指针就会指向想要的结点。原创 2025-03-09 17:02:50 · 374 阅读 · 0 评论 -
树的前序遍历和后序遍历(非递归!!!)
1、前序遍历:在处理前序遍历时,我们要做的遍历顺序时,根左右,我们通过栈来实现,那么对应的入栈顺序就是,根先进栈,然后出栈,然后右孩子进栈,左孩子再进栈,然后左孩子作为根结点,出栈,然后原左孩子的右孩子入栈,左孩子再入栈……2、后序遍历:后序遍历要做到的遍历顺序则是,左右根,那么我们可以将前序遍历的顺序改变一下,先入栈根结点,然后入栈左孩子,然后入栈右孩子……循环,最后做到了根右左,然后我们对结果进行翻转,就得到了左右根的顺序。树的前中后序遍历的递归法在我往期文章中,需要可以查看。原创 2025-04-19 09:38:14 · 80 阅读 · 0 评论 -
C语言数据结构:树的实现、前序、中序、后序遍历
树是一种非线性的数据结构,由若干个节点组成。每个节点都包含数据,并且可以有多个子节点。树的最顶端是一个特殊的节点,叫根节点,它没有父节点。从根节点开始,树不断向下分叉,形成不同的层次。最底层的节点叫叶子节点,它们没有子节点。原创 2025-04-12 18:50:48 · 427 阅读 · 0 评论 -
c语言数据结构:顺序表增删改查函数的实现
1、下列代码中 我用Eelemtype 来对int 取别名,在本段代码中意义不明显,但是在大量数据中如果要改int 型为 double型,则取别名的有点就显现出来了。其中共包含:1、初始化 2、最后一位插入 3、遍历 4、特定位置插入数据元素 5、特定位置删除数据元素 6、查找数据元素e第一次出现的位置。在数据结构中,我们最先接触到的内容就是线性表,本片文章的内容就是线性表中对顺序表增删改查的c语言实现。5、要注意顺序表的位置和在数组中序号的关系,length-1。4、对结构体取别名 Sq。原创 2025-03-06 18:04:34 · 293 阅读 · 0 评论