线性表
链表常见算法
山东金针菇
这个作者很懒,什么都没留下…
展开
-
设有一个带头结点的循环单链表,其结点均为正整数。设计一个算法,反复找出单链表中结点值最小的结点输出,然后将该结点从中删除,直到单链表为空为止,再删除头结点。
【代码】设有一个带头结点的循环单链表,其结点均为正整数。设计一个算法,反复找出单链表中结点值最小的结点输出,然后将该结点从中删除,直到单链表为空为止,再删除头结点。原创 2023-12-17 21:43:04 · 488 阅读 · 0 评论 -
有两个循环单链表,链表头指针分别为 h1 和 h2,编写一个函数将 h2 链接到 链表h1 之后,要求处理完仍是一个循环单链表。
注意题目说的是头指针 h1 和 h2,所以这两个循环单链表并没有头结点。原创 2023-12-17 21:21:04 · 371 阅读 · 0 评论 -
设计一个算法用于判断循环双链表是否对称。
分为两个情况,奇和偶,为奇(q=p)时用q!=p作为结束条件,为偶(p->next=q&&q->prior=p)时用 q->next!= p 作为结束条件,因为不能在p->next=q&&q->prior=p 的条件下就退出循环这样会少判断一对。原创 2023-12-17 21:10:43 · 511 阅读 · 0 评论 -
已知两个链表A 和 B分别表示两个集合,其元素递增排列。编写函数求 A 和 B 的交集,并存放在 A 中。
【代码】已知两个链表A 和 B分别表示两个集合,其元素递增排列。编写函数求 A 和 B 的交集,并存放在 A 中。原创 2023-12-17 20:46:14 · 482 阅读 · 0 评论 -
设A 和 B 是两个带头结点单链表,其中元素递增有序,设计一个算法从 A 和 B 中的公共元素产生 C,要求不破坏 A 和 B 的结点。
【代码】设A 和 B 是两个带头结点单链表,其中元素递增有序,设计一个算法从 A 和 B 中的公共元素产生 C,要求不破坏 A 和 B 的结点。原创 2023-12-16 22:14:05 · 776 阅读 · 0 评论 -
假设有两个按元素值递增次序排列的线性表以单链表形式存储,设计算法使得两个表合并为一个递增的单链表。要求利用原来两个单链表来存储归并后的单链表。
【代码】假设有两个按元素值递增次序排列的线性表以单链表形式存储,设计算法使得两个表合并为一个递增的单链表。要求利用原来两个单链表来存储归并后的单链表。原创 2023-12-16 21:57:46 · 320 阅读 · 0 评论 -
一个递增有序的单链表,去除其中值重复的元素。
【代码】一个递增有序的单链表,去除其中值重复的元素。原创 2023-12-16 21:37:15 · 564 阅读 · 0 评论 -
将一个带头结点单链表 A分解为A 和 B 使得 A 中为奇数项元素,B 中为偶数项元素,保持其相对顺序不变。
【代码】将一个带头结点单链表 A分解为A 和 B 使得 A 中为奇数项元素,B 中为偶数项元素,保持其相对顺序不变。原创 2023-12-16 21:03:58 · 334 阅读 · 0 评论 -
按照递增次序输出单链表中各结点的数据元素,并释放结点所占的空间。
【代码】按照递增次序输出单链表中各结点的数据元素,并释放结点所占的空间。原创 2023-12-14 22:59:10 · 432 阅读 · 0 评论 -
给定两个单链表,找出其公共结点
分别遍历两个单链表得到他们的长度,并求出两个长度之差。在长的链表上先遍历长度之差个结点之后,再同步遍历两个链表,直到找到相同的结点,或者一直到链表结束。原创 2023-12-14 22:33:39 · 406 阅读 · 0 评论 -
设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素。(若存在)
【代码】设在一个带表头结点的单链表中所有元素结点的数据值无序,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素。(若存在)原创 2023-12-08 13:37:33 · 392 阅读 · 0 评论 -
有一个带头结点的单链表L,设计一个算法使其元素递增有序。
【代码】有一个带头结点的单链表L,设计一个算法使其元素递增有序。原创 2023-12-06 19:22:49 · 401 阅读 · 0 评论 -
试编写算法将带头结点的单链表就地逆置(就地是指辅助空间复杂度为 O(0))。
将单链表就地逆置可以考虑使用头插法。原创 2023-12-06 19:09:46 · 454 阅读 · 0 评论 -
试编写在带头结点的单链表中删除一个最小值结点的算法(假设最小值结点唯一)。
【代码】试编写在带头结点的单链表中删除一个最小值结点的算法(假设最小值结点唯一)。原创 2023-12-06 13:59:09 · 425 阅读 · 0 评论 -
设L为带头结点的单链表,编写算法实现从尾到头反向输出每个结点的值。
从尾到头反向输出可以考虑使用头插法。原创 2023-12-06 13:51:36 · 556 阅读 · 0 评论 -
在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,编写算法实现上述操作。
【代码】在带头结点的单链表L中,删除所有值为x的结点,并释放其空间,假设值为x的结点不唯一,编写算法实现上述操作。原创 2023-12-06 13:40:39 · 488 阅读 · 0 评论 -
设计一个递归算法,删除不带头结点的单链表中所有值为x的结点。
【代码】设计一个递归算法,删除不带头结点的单链表中所有值为x的结点。原创 2023-12-06 13:25:29 · 453 阅读 · 0 评论 -
线性表(a1,..,an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法完成用最少时间在表中查找数值为X的元素,若找到则将其与后继元素位置相交换若找不到,则将其插入表中并使表中元素保持有序。
【代码】线性表(a1,..,an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法完成用最少时间在表中查找数值为X的元素,若找到则将其与后继元素位置相交换若找不到,则将其插入表中并使表中元素保持有序。原创 2023-12-05 22:57:40 · 391 阅读 · 0 评论 -
已知在一维数组A[m+n]中依次存放两个线性表(a1,..,am)和(b1,.,bn)。编写一个函数,将数组中两个顺序表的位置互换,即将(b1,.,bn)放在(a1,..,am)的前面。
【代码】已知在一维数组A[m+n]中依次存放两个线性表(a1,..,am)和(b1,.,bn)。编写一个函数,将数组中两个顺序表的位置互换,即将(b1,.,bn)放在(a1,..,am)的前面。原创 2023-12-05 19:09:55 · 952 阅读 · 0 评论 -
将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。
【代码】将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。原创 2023-12-05 14:00:54 · 541 阅读 · 0 评论 -
从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
【代码】从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。原创 2023-12-05 13:46:47 · 312 阅读 · 0 评论 -
从顺序表中删除其值在给定值s与t之间 (包含s和t,要求s<t) 的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
【代码】从顺序表中删除其值在给定值s与t之间 (包含s和t,要求s<t) 的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。原创 2023-12-04 23:49:07 · 382 阅读 · 0 评论 -
对长度n为的顺序表L,编写一个时间复杂度为 O(n)、空间复杂度为 O(1)的算法,该算法删除线性表中所有值为x的数据元素。
【代码】对长度n为的顺序表L,编写一个时间复杂度为 O(n)、空间复杂度为 O(1)的算法,该算法删除线性表中所有值为x的数据元素。原创 2023-12-04 23:26:44 · 341 阅读 · 0 评论 -
设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为 O(1).
【代码】设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为 O(1).原创 2023-12-04 23:19:37 · 468 阅读 · 0 评论 -
从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
【代码】从顺序表中删除具有最小值的元素(假设唯一) 并由函数返回被删元素的值。空出的位 置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。原创 2023-12-04 23:11:10 · 816 阅读 · 0 评论