![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单链表课后题
m0_62595744
这个作者很懒,什么都没留下…
展开
-
17.判断循环双链表是否对称
怎么结束这个遍历呢?对于节点数量不一样的循环链表有不同的方法,对于对称的,上面的方法是正确的,但是对于不对称的,上面这种方法就需要结束条件.顺着前驱指针的方向也行,顺着后继的方向也行,这里用后继q->next=p。判断对称,即定义两指针p和q,p顺着前驱指针的方向遍历,q顺着后继指针的方向遍历,每到一个节点,都判断一下,p和q所指向节点的数据域的值是否相同即p->data==q->data。原创 2023-10-15 16:23:23 · 257 阅读 · 1 评论 -
递增次序输出循环单链表中各结点数据值
L)表示如果循环链表头节点l不指向自己,代表循环链表中有其他元素。原创 2023-10-15 15:44:09 · 66 阅读 · 1 评论 -
18.链接两个循环单链表
1.设置两个尾指针,p和q,p是h1尾指针,指向h2首元结点,q是h2尾指针,指向h1首元结点。关键在于怎么让p遍历成尾指针,用循环链表的特性while(p->next!原创 2023-10-15 14:55:41 · 52 阅读 · 1 评论 -
判断单链表是否有环
定义两个指针,一个快指针一个慢指针,如果单链表有环,它俩总有时候能遇上。原创 2023-10-14 16:10:53 · 21 阅读 · 1 评论 -
16.判断b链表是否为a链表的连续子序列
串的简单模式匹配算法,也叫暴力匹配算法,基本思路是从主串的第一个字符开始,逐个比较主串和模式串中对应的字符,如果相等,则继续比较下一个字符,如果不相等,则从主串的下一个字符开始重新匹配。定义a序列指针为p,b序列指针为q,两者可以比较,再定义一个指针pre记录着从哪个节点开始这一轮的比较。如果模式串中的所有字符都匹配成功,则返回匹配成功位置;如果当前字符不相等,则将主串的比较位置后移一位,重新开始匹配。从主串的第一个字符开始,逐个和模式串中对应的字符进行比较。如果当前字符相等,则继续比较下一个字符。原创 2023-10-14 15:48:15 · 67 阅读 · 1 评论 -
09递增输出链表中节点数据,并释放所有节点
可以一边找一边删除,先找到最小的,输出了再给它释放了,再找到第二小的,打印了再给它释放了。最后直到链表中只剩头结点就完事了。1.按次序输出并释放节点。原创 2023-10-14 15:00:57 · 62 阅读 · 1 评论 -
15.两表交集放入其中一表中
1.找到相同的,通过尾插法插入a链表中,两个表中,释放除了交集外的所有节点。原创 2023-10-14 14:29:38 · 22 阅读 · 1 评论 -
14.两表公共元素产生新表
因为a、b表都是递增有序序列,所以可以设置三种情况,如果a的数值小于b,让a遍历到下一个值,再跟b比较;如果b的数值小于a,让b遍历下一个再跟a比较。如果a的数值等于b,建立新节点s,使其尾插到表c中。找相同的元素,在while(pa!=NULL&&pb!=NULL)给a设置p,给b设置q,判断p是否等于q。若a和b一个表长一个表短?可以让未完结的那个再遍历对比一遍短的那个表while(pb!1.先找到两表相同的元素,再进行尾插法插入到链表c中。1.题目有要求,不能破坏ab节点,所以只能创建新表。原创 2023-10-14 13:25:49 · 25 阅读 · 1 评论 -
12删除单链表中数值重复的节点
易知删除需要前驱指针和指向节点的指针,可以将前驱指针和指针进行判断,如果有重复,就用前驱指针进行删除。1.先找到重复的节点,再去删除。原创 2023-10-14 11:50:43 · 322 阅读 · 1 评论 -
13.两递增链表合为一个递减链表
1.先插入,再排序.。插入方法用头插法,由两联表都是递增可知,能比出来相对小的值,再利用头插法,变成递减链表。原创 2023-10-14 10:33:34 · 132 阅读 · 1 评论 -
11一表分两表,一表顺序,一表逆序
1.一个表分成两个,一个顺序,一个逆序,和上一题一样,不同的是b表的插入方式需要编程头插法。原创 2023-10-14 00:26:15 · 25 阅读 · 1 评论 -
10一个链表分成,一个为序号为奇,一个为序号为偶的
题型:一个表拆成两个表。原创 2023-10-14 00:03:59 · 41 阅读 · 1 评论 -
07删除介于给定的两个值之间的元素
设在一个带表头结点的单链表中所有元素节点的数据值无需,试编写一个函数,删除表中所有介于给定的两个值(作为函数参数给出)之间的元素的元素(若存在)1.删除两个值,需要先找到两个值。遍历找到这两个值代表的节点,返回节点值。2.找到之后进行删除。原创 2023-10-13 23:10:05 · 51 阅读 · 0 评论 -
04删除最小值节点(最小值节点唯一)
设置minpre和minp这两个指针,minp是永远指向链表中的最小值,通过比较p和minp的值的大小,将最小值存放在minp中。minp和minpre负责存值。之所以这样设置,是因为如果只设置一对p和pre,就成了排序了,无法在不移动原来结构的情况下找到最小值。需要遍历整个链表,设置两个指针,一个pre指向L,另个p指向首元结点。两者永远差一个值,两者负责移动。1.找到节点,删除节点。原创 2023-10-14 11:13:22 · 47 阅读 · 1 评论 -
1.递归删除值为x的节点
要删除的节点涉及到前面的那个节点,所以设置两指针,分别为pre和p,pre指向首节点。q:设计递归算法,删除不带头节点的单链表l中所有值为x的节点。学到了,释放空间后p还可以再参与程序。2. 实现题目要求,递归删除。p:1.创建链表 头插法或者尾插法。原创 2023-10-13 19:29:33 · 35 阅读 · 0 评论