![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言数据结构学习笔记
StazSans
这个作者很懒,什么都没留下…
展开
-
C语言数据结构 3.3:链队列和循环队列
队列的概念:队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。链队列:链队列顾名思义就是以链表的结构实现的队列代码:#include <stdio.h>#include <malloc.h>/** * 链队列的节点. */typedef struct LinkNode { int data; LinkNode* next;}*LinkNodePtr;/** * 链队列. */typedef struct L原创 2022-05-17 22:27:18 · 239 阅读 · 0 评论 -
C语言数据结构 3.2:递归和汉诺塔
概要:递归的基本思想是把打的问题转化为小的问题,因为这些问题的解决方法很多时候是一样的,所以在函数中表现出来就是函数调用它自生的情况,但递归的时间复杂度和空间复杂度比较高,所以有些时候用dp(动态规划)或者贪心算法来代替递归解决问题。递归累加:#include <stdio.h>/** * @brief 使用递归累加 * * @param paraN * * @return 计算结果 */int addTo(int paraN) { int tempSum;原创 2022-05-12 16:01:35 · 232 阅读 · 0 评论 -
C语言数据结构 3.1 :表达式求值
摘要:表达式求值是栈的一个很重要的应用,由于我没有学过c++,看不懂老师的帖子里的那一份代码,所以自己用c语言实现了一遍,主要运用的思想是将中缀表达式转化为逆波兰表达式,然后再利用栈求逆波兰表达式的值。算法思路:1.将中缀表达式转化为逆波兰表达式:由于逆波兰表达式的转换是一种很经典的算法,百度上的解释比我自己解释的会更好,所以直接引用百度上的算法说明:1、首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。2、读入一个用中缀表示的简单算术表达式。3、从左至右扫描该算原创 2022-05-11 21:05:21 · 3535 阅读 · 2 评论 -
C语言数据结构 3:栈和括号匹配
栈:栈是一种操作受限的线性表只允许从一端插入和删除数据。栈有两种存储方式,即线性存储和链接存储(链表)。栈的一个最重要的特征就是栈的插入和删除只能在栈顶进行,所以每次删除的元素都是最后进栈的元素,故栈也被称为后进先出(LIFO)表。每个栈都有一个栈顶指针,它初始值为-1,且总是指向最后一个入栈的元素,栈有两种处理方式,即进栈(push)和出栈(pop)。代码实现:#include <stdio.h>#include <malloc.h>#define STACK_原创 2022-05-11 20:44:00 · 515 阅读 · 0 评论 -
C语言数据结构 2.5:多项式的加法
摘要:多项式的加法是链表的基本应用,也有助于理解压缩表示。代码:#include <stdio.h>#include <malloc.h>/** * 多项式的一个链表。 */typedef struct LinkNode { int coefficient; int exponent; struct LinkNode *next;} *LinkList, *NodePtr;/** * @brief 创建并初始化链表 * * @return原创 2022-05-06 12:47:21 · 1065 阅读 · 1 评论 -
C语言数据结构 2.4:静态链表
概念:本质上是以数组的性质来储存数据,在结点中设置int类型的next值来表示下一个结点对应的下标,通过下标来访问链表中的元素。静态链表在创建之初就定义好了这个链表的大小,同时这个链表的大小一般不会发生改变,所以在一定程度上相比于动态的链表造成了资源的浪费,比如说创建了十个结点,只存储了五个元素,剩下的结点还是存在且没被利用。由于静态链表是通过数组来存储数据的,所以相比于动态链表来说静态链表的空间是连续分布的,即所有的结点在物理意义上都是相领的。代码:定义与创建:#define D原创 2022-05-03 02:58:09 · 447 阅读 · 1 评论 -
C语言数据结构 2.2&2.3:单链表与双向链表
概念:链表是以链式结构存储数据的,其中的元素在存储器上的位置是任意的,既逻辑上的相邻在屋里位置上不一定相邻。图示:结点:链表:头指针是指向头结点的指针。代码演示:定义链表结点:/** * 定义链表结构体 */typedef struct LinkNode { char data; struct LinkNode *next;} LNode, *LinkList, *NodePtr;创建一个只含有一个节点且没有数据的链表:/*..原创 2022-04-28 17:20:00 · 1478 阅读 · 2 评论 -
C语言数据结构 1:顺序表
C语言数据结构 1:顺序表顺序表是最常用的数据结构.自主完成的代码:/** * 在顺序表中找到给定的数并返回其位置,没有则返回-1 */int locateElement(SequentialListPtr paraListPtr, int paraValue) { for (int i = 0; i < paraListPtr->actualLength; i ++) {//暴力遍历,如果是有序的线性表使用二分查找法 if (paraListPt原创 2022-04-25 20:49:46 · 1521 阅读 · 0 评论