数据结构
文章平均质量分 56
本专栏围绕21版王道数据结构单科书中的代码和课后题进行实现
Gaolw1102
这个作者很懒,什么都没留下…
展开
-
王道单链表课后题代码实现及链表基本操作实现
链表的基本定义与方法列表#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0typedef int Element;typedef struct LNode{ Element data; LNode *next;}*LinkList;bool InitList(LinkList &L); //初始化线性表 Lbool DestoryList(LinkList &L原创 2021-06-07 01:59:15 · 839 阅读 · 0 评论 -
设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点(王道课后习题详解)
这道题是链表课后题大题的第一题,一开始就给我个下马威,刚开始想了很长时间也想不通,做不会,看了看课后答案也不理解,今天又苦思冥想好大一会终于解决了,下面就是这道链表算法题的核心思想:题干的要求是以:递归不带头结点的方式删除单链表中的所有值为x的结点,如果是普通的线性表删除,相信大家都会做,但是在不带头结点的情况以递归的方式删除就比较烧脑。由于最近时间比较近,来不及画图描述我的思想,我们直接研究答案吧!上我写的代码 (注意仔细看注释哦):/*1.设计一个递归算法,删除不带头结点的单链表 L原创 2021-06-07 01:52:59 · 6689 阅读 · 11 评论 -
如何逆置一个单链表(两种方法)?
在做关于单链表的一些算法题的时候,往往需要将单链表逆置后操作更加方便,但是一般说起来逆置,常用循环遍历单链表,使用头插法再次创建一个单链表实现逆置,但是这样不仅有点浪费存储空间,而且还容易搞混,那么如果要求空间复杂度为O(1)的话,那么就更不能使用头插法实现逆置了。这时可以采用特定的算法实现单链表逆置,它的思想大概是这样的:从头到尾扫描单链表,通过特定的手段使后面的一个结点依次指向前面的一个结点,这样,一个循环下去,那么这个单链表就实现了逆序操作。即从A---->A---->A----原创 2021-06-05 00:49:25 · 12061 阅读 · 1 评论 -
如何实现单链表中结点的前插操作?
学过数据结构的小伙伴们都知道,如果想要对单链表进行插入操作,一般都需要寻找到要插入结点的前一个结点进行后插入操作,即s->next = p->next; //s为插入结点,p为前一个结点 p->next = s;但是如果要求给定一个结点p,要求在这个结点p之前前插一个结点s该怎么办呢,我们是无法找到结点p之前结点的指针的,所以按照正常的思路是无法进行插入的。这时我们可以改变思路,偷天换日,巧妙解题,将 结点s 依旧插入 结点p 的之后, 再对结点s和p进行值交换,这样就完成了原创 2021-06-04 22:58:41 · 4683 阅读 · 0 评论 -
线性表的顺序表示及课后习题
最近已经开始了王道单科书的学习,但是学习进度很慢,嘿嘿,开学已经第三周了才更新出来线性表的顺序存储代码,由于线性表的顺序存储之前的文章已经介绍过,在此便不再继续展开介绍。以下是王道的数据结构线性表顺序存储实现代码和课后习题代码,仅供大家参考:线性表的主要操作和课后习题函数列表//一般线性表的基本操作 int InitList(SqList &L); //初始化线性表 int Empty(SqList &L); //线性表判空void PrintList(SqList &am原创 2021-03-23 18:56:04 · 361 阅读 · 0 评论 -
串(string)的顺序方式实现----线性结构
昨天把 串(string) 数据结构的基本知识和堆的实现方式 为大家分享了,今天再来为大家分享一下串(string)的 顺序实现方式 。如果小伙伴们对串的概念,请看上篇文章的介绍。文章目录字符串的定义所有方法的声明初始化字符串操作插入子串删除子串索引子串截取子串替换子串字符串比较字符串拷贝字符串的连接获取串的长度,判空、打印、清空、销毁串串(string)的顺序实现代码如下:字符串的定义#include<stdio.h>#include<stdlib.h>#defin原创 2021-02-07 23:11:14 · 558 阅读 · 1 评论 -
串(string)的堆方式实现详解----线性结构
前面已经完成了线性表、栈、队列等线性表的学习与实现,今天终于完成了线性结构中另一重要的数据结构----串(string),来和大家分享一下,共同进步。串,又称字符串。其实串就是由一个或多个字符组成的字符序列,使用串可以方便地存储我们想要存储的一切信息。假如我们现在需要存储某个同学的具体姓名、某个名人名言、某个段落、某篇文章,这些信息中既包含有数字信息、英文信息、中文信息、标点符号、特殊符号等,我们此时就可以用 串(string) 来进行存储了。串拥有很多操作方法,如初始化字符串、拷贝字符串、检索字符原创 2021-02-06 23:39:08 · 757 阅读 · 0 评论 -
队列(Queue)的链式实现详解----线性结构
昨天分享了栈的链式实现,今天有空也把队列的链式实现也为大家分享一下。队列(Queue) 也是线性表的一种重要的 受限型数据结构,见名思义,队列就是抽象概括生活中的现象。如我们在进行生活中进行排队时,我们一般都是从队尾进入队伍,然后等待处于队头的人逐渐出队,即每个人只能从队尾rear进行入队,从队头front进行出队,只允许单进单出,这就是队列数据结构的基本特征。我们把队列的这种的特性叫做FIFO(先进先出)。与之对应的是栈的特性LIFO(后进先出),详情请看上篇文章。称从队尾rear入队的操作为-原创 2021-01-31 23:21:03 · 416 阅读 · 0 评论 -
栈(Stack)的链式实现详解----线性结构
前面已经学习了线性存储的线性表操作,即元素之间的1对1之间的关系,如线性表的顺序、链式的存储和表示,就是数据元素之间的线性的一个表现。除了线性表,以线性存储的数据结构还有栈和队列、串、数组和广义表等。今天主要为大家分享数据结构之中的很重要的一个数据结构,就是------>栈怎样理解 “栈” 呢?栈在我们的生活中应用的非常广泛,如平时我们炒菜做菜用的碟子,一般需要放的时候需要一个一个将盘子从下到上给放上去,而用的时候又需要从上到下一个一个给拿出使用。又如我们所见的手枪的弹夹,我们对弹夹进行装子原创 2021-01-30 22:46:53 · 649 阅读 · 1 评论 -
线性表(LinkList)的链式表示和实现----线性结构
线性表的链式表示即通过链表的形式实现线性结构。我们可以用C语言可以定义一个结构体,结构体可以分为两部分,一部分存储想要进行保存的数据,另一部分用来定义一个指向该结构体的指针。此指针指向下一个这样的结构体,下个结构体的指针又可以指向下下一个结构体…如此往复,结构体直接互相连接,从而可以实现链表的形式。对于上一次的以数组存储的以顺序形式实现的线性结构,逻辑地址相邻,物理地址也相邻,具有方便随机存取查看,不便插入删除(都要前移元素或后挪)。这次的以链表形式实现的线性结构,逻辑地址相邻,物理地址不一定相邻,原创 2021-01-24 22:43:07 · 1076 阅读 · 1 评论 -
线性表(SequenceList)的顺序表示与实现----线性结构
最近在准备考研数据结构,之前大二已经学过了一次,再次复习只看书总也看不下去,越看越不像看,总觉得要想学得透彻敲敲代码才理解得更深,嘿嘿,这可能就是预备程序员的觉悟吧。今天从头开始,只要有时间,一直更新到严蔚敏版《数据结构》中的重要代码实现分析完毕!!!如果有写的不对的地方和需要探讨的地方,欢迎小伙伴们评论讨论~线性表的顺序表示和实现参考自严蔚敏版《数据结构》第二章第二节----线性表的顺序表示和实现数据结构分为3种结构:顺序结构、树状结构、图状结构(加上集合的话就是4种结构啦)今天主要讲顺序原创 2021-01-21 19:58:50 · 764 阅读 · 0 评论