单链表倒置
package arithmetic.line; /* * 单链表倒置 * * @author alchimie */ public class ReverseSingleLinked { // 倒置传入的单链表 public static SingleLinkedNode getReverseSingleLinked(SingleLinkedNode node) { SingleLinkedNode reverseSingleLinked = new SingleLinkedNode( node.getValue(), null); SingleLinkedNode lastN = reverseSingleLinked; while (node.getNext() != null) { node = node.getNext(); reverseSingleLinked = new SingleLinkedNode(node.getValue(), lastN); lastN = reverseSingleLinked; } return lastN; } public static void listLinked(SingleLinkedNode node) { System.out.print(node.getValue()); while (node.getNext() != null) { node = node.getNext(); System.out.print(node.getValue()); } System.out.println(""); } public static void main(String args[]) { int c = 75; SingleLinkedNode root = new SingleLinkedNode(String.valueOf((char) c), null); SingleLinkedNode lastN = root; // 生成单链表 for (int i = c - 1; i > 64; i--) { SingleLinkedNode n = new SingleLinkedNode(String.valueOf((char) i), lastN); lastN = n; } listLinked(lastN); listLinked(getReverseSingleLinked(lastN)); } } /* * 单链表Node */ class SingleLinkedNode { private String value; // 指向下一个Node private SingleLinkedNode next; public SingleLinkedNode(String value, SingleLinkedNode next) { this.value = value; this.next = next; } public String getValue() { return value; } public SingleLinkedNode getNext() { return next; } public void setNext(SingleLinkedNode node) { this.next = node; } }
输出结果:
ABCDEFGHIJK
KJIHGFEDCBA
相关推荐
本题目要求实现一个不带头节点的单链表倒置的算法,这是一个典型的链表操作问题,旨在考察对链表的基本操作和逻辑思维能力。这里我们将详细讲解如何实现这个算法,并使用C++语言进行编码。 首先,我们需要定义链表...
单链表倒置.c
### 知识点一:栈在单链表倒置中的应用 #### 1. 理解算法思路 要实现单链表的倒置,我们可以利用栈的特性来帮助我们。具体步骤如下: - **第一步:遍历链表并压栈**。从链表头部开始,遍历整个链表,将每个节点的...
单链表操作,希望能够帮助正在学习数据结构的同学
《数据结构与算法》(张宪超)给定一个不带头结点的单链表,写出将单链表倒置的算法
### 利用栈实现逆置单链表 在计算机科学中,数据结构是研究的核心之一。其中,链表和栈是非常基础且重要的两种数据结构。本文将详细介绍如何使用栈来实现单链表的逆置。 #### 一、基础知识回顾 在深入探讨之前,...
单链表逆序(简明,易懂) 单链表逆序(简明,易懂) 单链表逆序(简明,易懂)
实现链表的倒置:以倒插的方法的(既每次都插入到头结点的后面)来实现链表的倒置
6. 单链表倒置算法:该算法将单链表倒置,使其元素的顺序颠倒。 7. 菜单设计:在实验中,需要设计一个菜单,以选择菜单方式进行操作并实现上述算法。 8. 输入数据:在实验中,需要提供输入数据,以便调试程序。 9...
使用二级指针创建单链表,程序功能菜单如图所示void showMenu(){ printf("\t\t\t\t\t\t1.使用头插法创建链表\n"); printf("\t\t\t\t\t\t2.... printf("\t\t\t\t\t\t3.... printf("\t\t\t\t\t\t4....将单链表倒置\n"); }
数据结构中java版。。。对于单链表的倒置。。。
带头结点双链循环线性表是一种常见的数据结构,在C语言编程中被广泛使用。它是一种线性数据结构,每个元素都有两个指针,分别指向其前一个元素和后一个元素,同时整个线性表通过特定的设计形成了一个首尾相接的循环...
### 不改变链表储存空间实现单链表的倒置 #### 概述 在计算机科学领域,链表是一种常见的线性数据结构,其中元素不是在内存中连续存储的,而是通过节点之间的指针链接在一起。单链表是最简单的一种链表形式,每个...
用JAVA写一个倒置单链表的源代码,适用于初学者,简单易懂
单链表的操作 包括创建 删除 排序 求长度 倒置
/*把带头结点的单链表倒置(以结点形式 )*/ node *Dao_zhi(node *head) { node *p,*s; p=head->next; head->next=NULL; while(p) { s=p; p=p->next; s->next=head->next; head->next=s; } ...
具体来说,描述指出是关于“不带头结点的单链表倒置的算法与实现”,这将涉及链表数据结构和相关的操作。 在链表的领域,倒置链表是一种常见的操作,它涉及到将链表中的元素顺序反转。不带头结点的单链表意味着链表...
#### 五、单链表倒置 给定带头结点的单链表 `head`,倒置链表的过程如下: 1. 初始化指针 `p` 指向第一个数据结点。 2. 将原链表置为空表 `head->next = NULL`。 3. 使用循环结构,每次取出一个结点,并将该结点...
5. **单链表倒置**:使用三个指针,将当前节点的next指向前一个节点,同时移动指针。 6. **双向链表插入**:在两个特定节点之间插入新节点,更新前驱和后继指针。 7. **Sample(head)**:该算法实现了一个无表头结点...