2、之前把head.next设置为null,因为整个链表反转后,head变为最后一个节点。 现在head节点在递归反转后不一定为最后一个节点,故应记录后驱successor(第 n + 1 个节点), 反转之后将head连接上。 OK,如果这个函数你也能看懂,就离实现反转一部分链表不远了。 三、反转链表的一部分# 现在我们开始解决这个问题,给一...
一,链表的中间节点 链接:链表的中间节点 分析: 如果想要得到链表的中间节点,最简单的思路就是从头结点遍历整个链表,就可以知道链表的长度,假设为num个,要求是如果为偶数个数,返回第二个节点。得到个数后要创建新的节点,往后走num/2个位置。如果num为奇数,如5,往后next两步,如果是偶数如6,往后next3步,皆满...
四.环形链表(1) 快慢指针法 //先让fast进入循环,然后slow进入,最后fast与slow相遇bool hasCycle(struct ListNode *head){struct ListNode *slow=head;struct ListNode *fast=head;while(fast!=NULL&&fast->next!=NULL){slow=slow->next;fast=fast->next->next;if(fast==slow){return true;}}return false;}...
1#include <iostream>2usingnamespacestd;3typedefstructLNode4{5intdata;6LNode *next;7}LNode,*LinkList;8//逆位序输入n个元素的值,建立带头结点的单链线性表9LinkList createLinklist(LinkList &L)10{11L = (LinkList)malloc(sizeof(LNode));12L->next = NULL;//建立头结点13for(inti =0; i <...