单链表反转 本是古典 何须时尚 2022-08-09 01:55 322阅读 0赞 把每次翻转看成左右两个部分的翻转,比如第一次翻转时把左边的第一个节点看成左部分,把右边的第二个节点看成右部分,来进行翻转,第二次翻转时把左边的两个节点看成一个左部分,右边的第三个节点看成右部分,那么第二次翻转就是左边的由第一个和第二个节点组成的左部分和右边的由第三个节点组成的右部分进行翻转,第三次翻转以此类推。。 这样的话我们让current指针始终指向每次反转的两部分中的左部分的最后一个节点,注意,左部分的节点为一个或者很多个,令temp=current->next这个指针指向右部分的节点,注意,右部分节点始终只有一个。So....看下面代码: ![Image 1][] #include<iostream> using namespace std; struct ListNode{ int data; ListNode *next; }; ListNode* Create_Linklist(int *arr,int len) { ListNode* head = new ListNode(); head->next = NULL; ListNode* L = head; for (int i = 0; i < len; i++) { ListNode* newn = new ListNode(); newn->data = arr[i]; newn->next = NULL; L->next = newn; L = L->next; } return head; } void Reverse_LinkList(ListNode* &head) { if ( head && head->next ) { ListNode* current = head->next; //current始终指向每次被反转后的节点中的最后一个,因此current的next节点就是要被反转的节点,即tamp ListNode* temp; //temp始终指向被反转的节点,因此 temp 等于 current->next while (current->next) { temp = current->next; current->next = temp->next; temp->next = head->next; head->next = temp; } } } void Print_LinkList(ListNode* &head) { if (head) { ListNode* L = head; L = L->next; while (L) { cout << L->data; L = L->next; } } } void main(int argc, char *argv[]) { int arr1[] = { 1, 3, 5, 7 }; ListNode* head = Create_Linklist(arr1, sizeof(arr1) / sizeof(int)); Reverse_LinkList(head); Print_LinkList(head); } [Image 1]:
相关 单链表反转 常常面试我们会遇到考察列表反转的问题 如 1-->2-->3-->4-->5-->null这样的一个链表进行反转成为 null<--1<--2<--3<--4<--5 川长思鸟来/ 2023年06月25日 06:01/ 0 赞/ 56 阅读
相关 单链表反转 class Node{ int value; Node next; public Node(int value){ 淩亂°似流年/ 2023年06月24日 14:25/ 0 赞/ 52 阅读
相关 反转单链表 [https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&rp=1&ru=%2Ft 本是古典 何须时尚/ 2022年11月30日 01:46/ 0 赞/ 342 阅读
相关 单链表反转 include<iostream> using namespace std; typedef struct node { i 刺骨的言语ヽ痛彻心扉/ 2022年09月18日 04:47/ 0 赞/ 326 阅读
相关 单链表反转 public Node reverse(){ Node pReverseHead=null; Node pNode=head;//当前结点开始为 痛定思痛。/ 2022年08月10日 13:46/ 0 赞/ 345 阅读
相关 单链表反转 把每次翻转看成左右两个部分的翻转,比如第一次翻转时把左边的第一个节点看成左部分,把右边的第二个节点看成右部分,来进行翻转,第二次翻转时把左边的两个节点看成一个左部分,右边的第三 本是古典 何须时尚/ 2022年08月09日 01:55/ 0 赞/ 323 阅读
相关 反转单链表 前插 class ListNode { int val; ListNode next; ListNode(i Bertha 。/ 2022年08月04日 04:18/ 0 赞/ 362 阅读
相关 反转单链表 一、反转单链表 //反转单链表链表 class ListNode { int val; ListNode next = n Bertha 。/ 2022年05月26日 06:11/ 0 赞/ 322 阅读
相关 反转单链表 ![这里写图片描述][70] //解法一:反转链表 public ListNode reverseList(ListNode head){ 以你之姓@/ 2022年05月23日 04:36/ 0 赞/ 380 阅读
相关 单链表反转 单链表的翻转是一道很基本的算法题。 方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。 方法2:使用三个指针遍历单 悠悠/ 2022年03月09日 11:26/ 0 赞/ 396 阅读
还没有评论,来说两句吧...