貌似各种笔试面试里这个挺爱考的,不清楚过程多画画图就明白了。
先写的单的,哪天把双链表逆置写一下。
public class LinkedListReverse {
/**
* 单链表逆置
*
* @author aaron-han
*
*/
public static void main(String[] args) {
Node a = new Node("NodeA");
Node b = new Node("NodeB");
Node c = new Node("NodeC");
Node d = new Node("NodeD");
Node e = new Node("NodeE");
a.next = b;
b.next = c;
c.next = d;
d.next = e;
System.out.println("original:");
printNodes(a);
Node head = reverse(a);
System.out.println("after reverse:");
printNodes(head);
}
public static Node reverse(Node node) {
if (node == null) {
return node;
}
Node head = node;
Node pre = null;
Node next = head.next;
while (next != null) {
head.next = pre;
pre = head;
head = next;
next = next.next;
}
head.next = pre;
return head;
}
public static void printNodes(Node node) {
for (; node != null; node = node.next) {
System.out.println(node.name);
}
}
static class Node {
String name;
Node next;
Node(String name) {
this.name = name;
}
}
}
分享到:
相关推荐
### 单链表逆置算法详解 #### 一、引言 在计算机科学中,链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。单链表是最简单的一种链表形式,其中每个节点只包含一个指向其...
写一个算法将一单链表逆置。要求操作在原链表上进行。
单链表逆置是指将链表中的元素顺序颠倒,使得原本在前的节点变为在后。在这个场景中,我们将讨论如何使用C++来实现这个操作,并输出逆置后的链表。 首先,我们需要定义链表节点的结构体。在C++中,这通常通过以下...
数据结构和算法应用单链表逆置.cpp
### 单链表逆置知识点解析 #### 一、单链表基础概念 单链表是一种常见的线性数据结构,其特点是每个元素节点只包含一个指向下一个元素节点的指针。这种结构使得单链表在内存中是非连续分布的,但通过节点之间的...
对以单链表为存储结构的表实现就地逆置,即在原有空间上实现逆置,不开辟新空间
用头插入法来做,直到输入0时,按enter键结束。
### 单链表逆置与排序算法解析 #### 引言 在计算机科学领域中,数据结构和算法一直是核心主题之一。单链表作为一种基本的数据结构,在实际应用中有着广泛的应用场景,尤其是在软件开发和系统设计中。对于求职者而言...
### 单链表逆置的完整实现Java版 #### 知识点概述 本文将详细介绍如何在Java中实现单链表的逆置操作,并通过一个实际的代码示例来展示整个过程。逆置单链表是一项常见的数据结构操作,在很多算法问题中都会遇到,...
#### 逆置算法步骤 为了实现单链表的就地逆置,可以采用以下步骤: 1. **初始化指针**:设置三个指针 `p`, `q`, 和 `r`。初始时,`p` 指向 `null` 表示链表的新的头节点,`q` 指向链表的当前节点,而 `r` 指向当前...
诸如 LeetCode、力扣、牛客网等在线编程挑战平台提供了大量的单链表逆置问题作为算法练习题,学习者可以在实战中检验和巩固所学知识。此外,这些平台上的讨论区也为学习者提供了一个交流心得和优化方案的空间,有助...
对于单链表的原地逆置操作,指的是不借助额外的数据结构来创建新的链表,而是在原有的链表基础上通过修改指针的方向来达到逆置的效果。这一过程不仅能够节省空间,还提高了算法的效率。 ### 实现原理 要实现单链表...
在数据结构领域,单链表是一种基础且常用的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。逆置单链表是指将链表中的元素顺序反转,原本的头节点变为尾节点,原本的尾节点变为头节点。就地...
单链表是一种基础的数据结构,它由一系列节点组成,每个节点包含数据以及指向下一个节点的指针。在计算机科学中,链表的操作是常见的数据处理任务之一,逆置链表就是将链表中的顺序反转,使得原来的首节点变为尾节点...
`reverseList()`是实现单链表逆置的核心函数,通过改变节点的`next`指针使其指向前一个节点,从而达到逆置链表的效果。 在C++中,我们还可以使用智能指针(如`std::unique_ptr`)来管理链表中的内存,以防止内存...
判断单链表是否有环可以使用 Floyd 的环检测算法,具体实现步骤如下: 1. 设定两个指针 p1 和 p2,分别指向链表的头节点。 2. 对链表进行遍历,p1 向前走一步,p2 向前走两步。 3. 如果 p2 碰到 NULL 指针或者两个...
**2.2 单链表逆置算法分析** 对于单链表逆置,主要思想是通过遍历链表,改变每个节点的指针方向,使它们指向前面的节点而不是后面的节点。具体步骤如下: 1. **创建单链表**:根据用户输入的元素值构建单链表。 2....
链表作为一种基础且重要的数据结构,在计算机科学中广泛应用于各种算法和程序设计中。逆置链表是一项常见的操作,它可以改变链表元素的顺序,使得原本的最后一个元素变为第一个,以此类推。本文将深入探讨如何用...
menu(); void MainMenu(); //主菜单,进入主操作界面 void menu1(); //创建单链表 void menu2(); //读取指定位置元素 void menu3(); //在指定位置前插入新元素 void menu4();... //将单链表逆置