1、单链表中删除绝对值一样的节点分析:传入一个数组和n,故函数名为void函数名(LiukListL,intn)。创建一个动态数组存储(n+1大小)并初始化为然后开始遍历,使用三目运算符,使负的变为正,即(m=p->next->data>0?p->next->data:-p->next->data;),如果再数组中为则记录,并继续,如果不为则使跳过其。知道循环结束。
2、重新排列,aan,aan-aan…思路:找到链表的中点反转链表的后半部分,使用头插法交替合并链表的前半部分和反转后的后半部分,使用尾插法。
3、带头结点的单链表,共同后缀的起始位置分析:返回节点+对AB不操作,故函数名为Lnode*函数名(LiukListstrLiukListstr?使用while§循环遍历,先记录并计算,str1和str2的长度,先使长度小的先移动他们的差,然后再不到最后的情况下,同时移动,找到相同节点。返回该位置。
4、设线性表L=(XX…,Xn-Xn-Xn)中存储整型数据,采用带头结点的单链表保存。中奇数位序的数据元素按升序存放,偶数位序的数据元素按降序存放。请设计一个空间复杂度为0(且时间上尽可能高效的算法,将链表中的元素按从小到大的顺序排序
5、两个值有序非空线性链表合并一个按值有序的链表分析:返回为一个链表,传入的只要A会改变,故函数名为Linklistfunc(LinklistA,LinklistB),定义p和q分别指向A和B,先创造C的头部,令A,B中小的赋值,使用while循环一起遍历,使值小的在C的后面,并更新C的尾部,在结束循环时,在C的尾部加入指向NULL。返回C即可。
6、奇数位序的数据元素按升序存放,偶数位序的数据元素按降序存放->原地条件下->按从小到大的顺序排序分析:传入链表对其操作并返回。故函数名为:Linklistfunc(Linklist&L)。定义p并使其指向头节点的下一个的下一个,p指向链表中第三个节点。使后面的断链即,指向NULL。从p开始使用while循环遍历,定义一个pre指向L从头开始遍历,知道插入位置,使用尾插法插入,并更新p的位置,一直找到其对于的位置。
7、假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,可共享相同的后缀存储空间,例如,loading和being的存储映像如下图所示,设strl和str2分别指向两个单词所在单链表的头结点,链表结点结构为datanext。请设计个时间上尽可能高效的算法,找出由st1和str2所指向两个链表共同后缀的起始位置(如图中字符i所在结点的位置P)。
8、用单链表保存m个整数,结点的结构为[data][link],且|data| 9、设线性表L=(aa.a…,ananam)采用带头结点的单链表保存,链表中的结点定义如下 10、将两个按值有序排列的非空线性链表合并为一个按值有序的线性链表