数据结构
白薇.
这个作者很懒,什么都没留下…
展开
-
双端队列[《数据结构题集》(C语言版) 3.14题解答与总结]
3.14题目如下:若以 1234作为双端队列的输入序列, 试分别求出满足以下条件的输出序列: (1) 能由输入受限的双端队列得到, 但不能由输出受限的双端队列得到的输 出序列。 (2) 能由输出受限的双端队列得到, 但不能由输入受限的双端队列得到的输 出序列。 (3) 既不能由输入受限的双端队列得到, 也不能由输出受限的双端队列得到 的输出序列。要想解决这...原创 2020-04-09 11:48:56 · 1272 阅读 · 0 评论 -
循环队列的8种基本运算
NOTICE: 代码测试没问题,直接复制就能跑!环境:Visual Stdio Code阅读这篇文章之前你必须要记住一件事:Q.rear 指向的不是队尾元素,而是队尾元素的下一个位置!!循环队列中经常遇到以下几种问题:1.已知 Q.front, Q.rear 求元素个数 count;2.已知 Q.front, count 求 Q.rear;3.已知 Q.re...原创 2020-04-03 16:33:58 · 1957 阅读 · 0 评论 -
链式队列的八种基本运算[考研重点]
NOTICE: 代码测试没问题,直接复制就能跑!环境:Visual Stdio Code链式队列可以看成一个有头尾节点的单链表,但是它跟有头尾节点的单链表的唯一区别就是:链式队列只能从一端(rear 端)插入,从另一端(front 端)删除。废话不多说,上代码:#include<stdio.h>#include<stdlib.h>#define ...原创 2020-04-02 16:20:55 · 727 阅读 · 0 评论 -
已知单链表 A, B 和 C 均为递增有序排列,现要求对 A 表作如下操作:删去那些既在 B 表中出现又在 C 表中出现的元素。试对单链表编写实现上述操作的算法。
NOTICE: 本题代码是按照源码顺序贴上的,复制可直接运行环境: Visual Stdio Code题目已知单链表 A, B 和 C 均为递增有序排列,现要求对 A 表作如下操作:删去那些既在 B 表中出现又在 C 表中出现的元素。试对单链表编写实现上述操作的算法。分析题目的要求我们可以理解成将三个单链表的交集从表 A 中删除,A 中剩余元素就是结果。我们可以...原创 2020-03-27 11:40:21 · 2884 阅读 · 3 评论 -
单链表的9中运算(有头结点)[考研重点]
说明1.有头结点的单链表的9中运算;2.因为网上的写法与书上的多少有点儿出入,所以我就自己写了一遍常用的9中运算,如果想要不带头结点的运算,你可以在相应的运算中加一个 if 判断,然后把没有头结点的情况列进去就行啦!代码#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0t...原创 2020-03-27 11:08:07 · 393 阅读 · 0 评论 -
利用顺序栈实现括号匹配的检验
NOTICE: 本题代码是按照源码顺序贴上的,复制可直接运行环境: Visual Stdio Code题目利用顺序栈实现括号匹配的检验(严蔚敏版《数据结构》第49页3.2.2)思路我的思路是直接入栈和检验同时进行,即:如果两个相近的括号的差值符合要求([ ] 的差值为 2、( ) 的差值为 1),就将此时顺序栈的最上边两个元素出栈,如果 StackLength 为 0, ...原创 2020-03-20 17:48:51 · 3643 阅读 · 0 评论 -
任意十进制非负整数转化为八进制
NOTICE: 本题代码是按照源码顺序贴上的,复制可直接运行环境: Visual Stdio Code题目:对于输入的任意一个非负十进制整数,算出它的八进制。说明:严蔚敏版《数据结构》的第 48 页的算法有个问题: 出栈的时候必须有取地址符,不然会以一种类似于 copy 的形式出栈。我稍微改了一下,毕竟书上写的是近似于伪码的算法(只是写个思路嘛,可以理解的)。代码...原创 2020-03-19 16:11:40 · 5579 阅读 · 1 评论 -
顺序栈的9中基本运算[考研重点]
环境:Visual Stdio Code因为严蔚敏版的《数据结构》上只列出了4中运算,其他5种没有,所以我就搜集齐了,以备后患。代码:#include<stdio.h>#include<stdlib.h>#define STACK_INIT_SIZE 10 // 存储空间初始分配量#define STACKINCREMENT 1 //...原创 2020-03-15 16:19:10 · 185 阅读 · 0 评论 -
顺序表的9中基本运算[考研重点]
顺序表的9种基本运算为:InitList(SqList &L) // 初始化顺序表ListEmpty(SqList &L) // 判断顺序表是否为空DispList(SqList &L) // 打印顺序表ListInsert(SqList &L,int i,int e) // 将新元素 e 插入到表 L 的第 i 个位置之前ListDelete(...原创 2020-03-14 16:09:20 · 656 阅读 · 0 评论 -
已知有一个单向循环链表,其每一个节点中含有三个域:prior,data 和 next,其中 data 为数据域,next 为指向后继节点的指针域,prior 为指针域,但它的值为空(NULL),试编此
NOTICE: 本题代码是按照源码顺序贴上的,复制可直接运行环境: Visual Stdio Code题目已知有一个单向循环链表,其每一个节点中含有三个域:prior,data 和 next,其中 data 为数据域,next 为指向后继节点的指针域,prior 为指针域,但它的值为空(NULL),试编此单向循环链表改为双向循环链表,即使 prior 成为指向前驱节点的指针域。分析...原创 2020-03-10 17:38:31 · 6906 阅读 · 2 评论 -
假设有两个元素依值递增有序排列的单链表 A 和 B 分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个单链表 C,其元素为 A 和 B 中元素的交集,且表 C 中的元素也依值递增有
NOTICE: 代码是按照源码顺序依次贴上来的,直接复制就能跑!环境:Visual Stdio CodePS:如果你先看了我的上一篇文章,这个算法就很好解决,如果没有看上一篇文章,只能一点一点往下看、慢慢分析啦~题目假设有两个元素依值递增有序排列的线性表 A 和 B 分别表示两个集合(即同一表中的元素值各不相同),现要求另辟空间构成一个线性表 C,其元素为 A 和 B 中元素的...原创 2020-03-07 16:02:42 · 4901 阅读 · 2 评论 -
假设有两个按元素值递增有序排列的线性表 A 和 B,均以单链表作为存储结构,请编写算法将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利用原表的节点空间构造 C 表。
NOTICE: 代码是按照源码顺序依次贴上来的,直接复制就能跑!环境:Visual Stdio Code题目假设有两个按元素值递增有序排列的线性表 A 和 B,均以单链表作为存储结构,请编写算法将 A 表和 B 表归并成一个按元素递减有序排列的线性表 C,并要求利用原表(即 A 表和 B 表)的节点空间构造 C 表。分析因为表 A 和表 B 都是按照递增有序排列的,我们没有...原创 2020-03-07 11:58:52 · 18513 阅读 · 9 评论 -
设线性表 A=(a1, a2, ..., am),B=(b1, b2,..., bn) ,试写一个按下列规则合并 A,B为线性表 C的算法,即使得 C = (a1, b1,..
NOTICE: 本题代码是按照源码顺序粘贴的,复制可直接运行环境: Visual Stdio Code题目设线性表 A=(a1, a2, ..., am),B=(b1, b2,..., bn),试写一个按下列规则合并A,B为线性表 C的算法,即使得 C = (a1, b1,..., am, bm, bm+1,..., bn) 当 m <= n ...原创 2020-03-04 17:36:26 · 12462 阅读 · 9 评论 -
试写一算法,对单链表进行逆置
NOTICE: 本篇代码是按照源码的书写顺序所写,复制之后可直接运行。环境: vscode题目:试写一算法,对单链表进行逆置分析:单链表的逆置需要设置两个指针,第一个进行遍历单链表;第二个进行节点的反向连接。主意:本题所说的逆置不能开辟新的内存空间,这样一来就不能创建一个新的表然后利用尾插法进行“逆置”了。代码:初始化单链表:#include<stdio...原创 2020-03-04 15:26:22 · 14534 阅读 · 4 评论 -
试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1, a2,..., an)逆置为(an, an-1, ..., a1)
NOTICE: 本篇代码是按照源码的书写顺序所写,复制之后可直接运行。环境: vscode题目:试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1, a2,..., an)逆置为(an, an-1, ..., a1)分析:该题有两个点必须注意:1.是顺序表不是单链表;2.利用原表的存储空间实现逆置利用原表的存储空间就意味着不能再创建一个表,将原表的数据元素...原创 2020-03-03 15:09:55 · 28742 阅读 · 3 评论 -
试写一高效的算法,删除单链表中所有值相同的多余元素(使得操作后的线性表中所有元素均不相同),同时释放被删节点空间
NOTICE: 本题代码是按照源码顺序粘贴的,复制可直接运行环境: Visual Stdio Code题目试写一高效的算法,删除单链表中所有值相同的多余元素(使得操作后的线性表中所有元素均不相同),同时释放被删节点空间分析只需要遍历找到值相同的节点(必须定义至少两个变量)然后删除节点、释放内存空间即可。代码初始化:#include<stdio.h>#...原创 2020-03-01 10:51:45 · 4632 阅读 · 0 评论 -
已知线性表中的元素以值递增有序排列,并一单链表作存储结构。试写一高效的算法,删除表中所有值大于 mink 且小于 maxk 的元素,并释放其内存空间。
NOTICE: 代码是按照源码顺序依次贴上来的,直接复制就能跑!环境:Visual Stdio Code题目:已知线性表中的元素以值递增有序排列,并一单链表作存储结构。试写一高效的算法,删除表中所有值大于 mink 且小于 maxk 的元素 (若表中存在这样的元素),同时释放被删除节点空间。(注意:mink 和 maxk 是给定的两个参变量,他们的值可以和表中的元素相同,也可...原创 2020-03-01 08:48:12 · 16603 阅读 · 10 评论 -
在无头结点的动态单链表上实现线性表操作DELETE(L, i),并和在带头结点的动态单链表上实现相同操作的算法进行比较
题目:在无头结点的动态单链表上实现线性表操作DELETE(L, i),并和在带头结点的动态单链表上实现相同操作的算法进行比较分析:删除节点的操作一般步骤为:找到该节点的直接前驱,然后使其直接前驱的 next 指向该节点的直接后继代码:初始化:#include<stdio.h>#include<stdlib.h>#define OK 1ty...原创 2020-02-28 16:12:31 · 940 阅读 · 0 评论 -
在无头结点的动态单链表上实现线性表操作 INSERT(L, i, B),并和在带头结点的动态单链表上实现相同操作的算法进行比较。
题目:在无头结点的动态单链表上实现线性表操作 INSERT(L, i, B),并和在带头结点的动态单链表上实现相同操作的算法进行比较。分析:首先我们要先初始化一个单链表,接下来要给这个单链表中添加数据元素,最后再在某一位置前插入某一数据元素代码:链表初始化:#include<stdio.h>#include<stdlib.h>#define ...原创 2020-02-28 15:47:27 · 2855 阅读 · 3 评论 -
设顺序表 Va 中的数据元素递增有序。试写一算法,将 x 插入到顺序表的适当位置上,以保证该表的有序性
题目:设顺序表 Va 中的数据元素递增有序。试写一算法,将 x 插入到顺序表的适当位置上,以保证该表的有序性分析:因为是顺序表,所以插入的时候得将 x 插入的位置之后的元素全部后移一个位序,假设 x 插入到第 i 个位置上,那么,从第 i+1 到 Va.length-1(表长与位序差一)的元素都向后移。C语言实现:#include<time.h>#include&...原创 2020-02-26 14:47:55 · 16112 阅读 · 0 评论