C语言数据结构与算法
文章平均质量分 63
随着作者的学习进度持续更新中。
GalaxyerKw
努力学习,不当鸽子✧*。٩(ˊωˋ*)و✧*。
展开
-
【数据结构】二叉树的实现和三种遍历方式的两种实现(前序、中序、后续遍历 / 递归法、非递归法)
二叉树是一种重要的数据结构,初学的我们先要了解如何建立一个二叉树,以及如何去遍历这个二叉树。①二叉树的概念和建立“二叉树”极其类似于变相的链表,只是,其中的每个节点需要存放两个指针:“左支指针left”和“右支指针right”,作为父子结点之间连接的纽带。那么,我们只需要建立一个表征Tree结点的结构体。struct TreeNode //树节点,表示树中的每一个元素{ elemtype data; struct TreeNode* left; //左支指针原创 2021-02-06 23:55:44 · 812 阅读 · 0 评论 -
【算法】KMP算法完全解析(C语言实现)
①KMP算法到底是用来干什么的?KMP算法所做的事情,就是在字符串中寻找子串。比如ilovecode这个字符串中,我们可以搜寻到love这个子串。但如果用回溯的暴力方法寻找子串(即两个for循环),虽然思路简单,但是时间复杂度为O(M*N)。借助KMP算法,可将复杂度降为一个循环,增进了效率。②学习KMP算法之前必须知道的东西(1)前缀和后缀的概念:*前缀:指的是从首字符开始往后的子字符串(不包括尾字符)。比如lwcsb的前缀就是l、lw、lwc和lwcs,lwcsb不是前缀。*后缀:与前缀相.原创 2021-02-04 22:51:34 · 1431 阅读 · 9 评论 -
【数据结构】队列的链式实现和操作(队列的建立,入队,出队)
队列是一种特殊的数据结构。与“栈”大不相同的是,队列要求“先进先出”,即只有队尾可以插入,只有队首可以弹出。但其创建或操作的基本思路与“栈”大致相同,唯一不同的是链式队列拥有top和base两个指针。由于思路大致相同,我在这篇文章中只写不同点和注意点。(“栈”有关的知识请到这里学习:(https://blog.csdn.net/GalaxyerKw/article/details/113546250))注意点:①入队时:与栈不同的是,队列的入队时从队尾入,所以显然是尾插法。而先进后出的栈则是头插法原创 2021-02-02 17:38:38 · 1912 阅读 · 0 评论 -
【数据结构】栈的链式实现和操作(创建栈,入栈,出栈,获取栈顶元素)
栈是一种重要的数据结构,符合“后进先出”(FILO)的原则。就像向箱子里堆东西一样,后放入的元素需要被先取出来。这篇文章,我将介绍链式栈的创建和基本操作。①链式栈的实现需要两个结构体:Stack和Node。(1)Node结构体即为链表的结点,存放data和next指针。Node结构体用来存放数据并组成栈,入栈和出栈都需要借助Node结构体。(2)Stack结构体即为“栈”的实体,存放栈容量size和top指针。由于这个栈已经借助Node创建好了,我们只需要通过top指针就可以操作栈了。所以top指针原创 2021-02-02 11:49:11 · 10267 阅读 · 3 评论 -
【数据结构】链表的基础知识以及代码实现(单链表)(双链表)(循环链表)
作者在学习单链表之后,自己学着创建了一个单链表的头文件,请看代码:(其中的重点和细节注意点我均在标注出标注)/* 本程序为头文件<LWClinklist.h>,可以执行单链表的基本操作。 【目录】 PNode createlist(size_t size):尾插法创建(并录入)单向链表 void turnto_circle_list(PNode PHead):转化为环形循环链表(即去除头结点,尾结点next指向第一结点) void connectlist(PNode原创 2021-01-22 23:20:54 · 199 阅读 · 0 评论