所谓“就地是指辅助空间复杂度为O(1)。 解法一:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法),直到最后一个结点为止。 代码如下 解法二: 通过若干操作将指针反转达到逆置的目的。 假设pre、p和r指向3个相邻的结点,如上图 ...
因为只能顺序访问,所以不能用两个指针一个一个的颠倒。 想的新思路是:从第二个结点开始,从链表上拆下来,往头结点后面插入。 注意:因为每一次都把第二个元素拆下来,所以指针不用后移,每次都是拆那个位置。 ...
2019-09-18 16:45 0 427 推荐指数:
所谓“就地是指辅助空间复杂度为O(1)。 解法一:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法),直到最后一个结点为止。 代码如下 解法二: 通过若干操作将指针反转达到逆置的目的。 假设pre、p和r指向3个相邻的结点,如上图 ...
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数。L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置,如原单链表元素依次为1,2,3,4,则逆置后为4,3,2,1。 函数接口定义 ...
void deleteLinkList(LinkList *&L){ LinkList *p=L->next,*s,*q; while(p!=N ...
解法2 ...
最近在看链表,今天刷到一道链表的反转题,链表反转可以说是基础操作,但是可提供的方案也有很多,简单通过了该题后又学习了一下递归反转,现在把三种方法都公开出来做一个总结。 1.就地逆置 2.单参数的递归逆置 3.双参数的递归逆置 一、就地逆置 方法:头插。 由于这里是不带表头结点的单向链表 ...
代码: 实验截图: ...
方法一:就地逆序 方法二:插入法 方法三:原地递归反转 ...
转自:http://blog.csdn.net/xlf13872135090/article/details/8857632 Node *head; //声明头结点 带头结点初始化 void InitList(Node **head ...