单链表的反转 小灰灰 2021-10-01 04:28 354阅读 0赞 [ ][Link 1] 单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据。二是指针域,用于存储下一个节点的地址。在Java中定义如下: public class Node { private Object data; //数据域 private Node next; //指针域 public Node(Object data){ this. data = data; } public Node(Object data,Node next){ this. data = data; this.next = next; } public Object getData() { return data; } public void setData(Object data) { this. data = data; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } } 单链表的反转操作是面试java开发中常考的题目,笔者面试时曾被这道题虐过qaq,之后痛定思痛,研究了一番之后,写出来与大家分享。 先说下思路:所谓的单链表反转,就是把每个节点的指针域由原来的指向下一个节点变为指向其前一个节点。但由于单链表没有指向前一个节点的指针域,因此我们需要增加一个**指向前一个节点的指针pre**,用于存储每一个节点的前一个节点。此外,还需要定义一个**保存当前节点的指针cur**,**以及下一个节点的next。**定义好这三个指针后,遍历单链表,将当前节点的指针域指向前一个节点,之后将定义三个指针往后移动,直至遍历到最后一个节点停止。 OK,说完思路,直接上代码。 public static Node reverseListNode(Node head){ //单链表为空或只有一个节点,直接返回原单链表 if (head == null || head.getNext() == null){ return head; } //前一个节点指针 Node preNode = null; //当前节点指针 Node curNode = head; //下一个节点指针 Node nextNode = null; while (curNode != null){ nextNode = curNode.getNext(); //nextNode 指向下一个节点 curNode.setNext(preNode); //将当前节点next域指向前一个节点 preNode = curNode; //preNode 指针向后移动 curNode = nextNode; //curNode指针向后移动 } return preNode; } [Link 1]: http://creativecommons.org/licenses/by-sa/4.0/
相关 单链表的反转 链表的反转 代码: // A->B->C->D // D->C->B->A package com.weidd.best.dataStru 布满荆棘的人生/ 2023年01月13日 10:53/ 0 赞/ 82 阅读
相关 反转单链表 [https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&rp=1&ru=%2Ft 本是古典 何须时尚/ 2022年11月30日 01:46/ 0 赞/ 265 阅读
相关 单链表反转 include<iostream> using namespace std; typedef struct node { i 刺骨的言语ヽ痛彻心扉/ 2022年09月18日 04:47/ 0 赞/ 240 阅读
相关 单链表反转 public Node reverse(){ Node pReverseHead=null; Node pNode=head;//当前结点开始为 痛定思痛。/ 2022年08月10日 13:46/ 0 赞/ 256 阅读
相关 单链表反转 把每次翻转看成左右两个部分的翻转,比如第一次翻转时把左边的第一个节点看成左部分,把右边的第二个节点看成右部分,来进行翻转,第二次翻转时把左边的两个节点看成一个左部分,右边的第三 本是古典 何须时尚/ 2022年08月09日 01:55/ 0 赞/ 246 阅读
相关 反转单链表 前插 class ListNode { int val; ListNode next; ListNode(i Bertha 。/ 2022年08月04日 04:18/ 0 赞/ 270 阅读
相关 反转单链表 一、反转单链表 //反转单链表链表 class ListNode { int val; ListNode next = n Bertha 。/ 2022年05月26日 06:11/ 0 赞/ 238 阅读
相关 反转单链表 ![这里写图片描述][70] //解法一:反转链表 public ListNode reverseList(ListNode head){ 以你之姓@/ 2022年05月23日 04:36/ 0 赞/ 282 阅读
相关 单链表反转 单链表的翻转是一道很基本的算法题。 方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。 方法2:使用三个指针遍历单 悠悠/ 2022年03月09日 11:26/ 0 赞/ 324 阅读
相关 单链表的反转 [ ][Link 1] 单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据。二是指针域,用于 小灰灰/ 2021年10月01日 04:28/ 0 赞/ 355 阅读
还没有评论,来说两句吧...