`
alchimie
  • 浏览: 20456 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

单链表倒置

 
阅读更多

单链表倒置

 

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

    单链表倒置.c

    借助栈将一个带头结点的单链表倒置

    ### 知识点一:栈在单链表倒置中的应用 #### 1. 理解算法思路 要实现单链表的倒置,我们可以利用栈的特性来帮助我们。具体步骤如下: - **第一步:遍历链表并压栈**。从链表头部开始,遍历整个链表,将每个节点的...

    单链表倒置操作

    单链表操作,希望能够帮助正在学习数据结构的同学

    将不带头结点的单链表倒置

    《数据结构与算法》(张宪超)给定一个不带头结点的单链表,写出将单链表倒置的算法

    利用栈实现逆置单链表

    ### 利用栈实现逆置单链表 在计算机科学中,数据结构是研究的核心之一。其中,链表和栈是非常基础且重要的两种数据结构。本文将详细介绍如何使用栈来实现单链表的逆置。 #### 一、基础知识回顾 在深入探讨之前,...

    单链表逆序(简明,易懂)

    单链表逆序(简明,易懂) 单链表逆序(简明,易懂) 单链表逆序(简明,易懂)

    链表倒置C程序

    实现链表的倒置:以倒插的方法的(既每次都插入到头结点的后面)来实现链表的倒置

    算法与数据结构 实验一(20软件1、2、3班).docx

    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数据结构单链表的倒置

    数据结构中java版。。。对于单链表的倒置。。。

    带头结点双链循环线性表

    带头结点双链循环线性表是一种常见的数据结构,在C语言编程中被广泛使用。它是一种线性数据结构,每个元素都有两个指针,分别指向其前一个元素和后一个元素,同时整个线性表通过特定的设计形成了一个首尾相接的循环...

    不改变链表储存空间实现单链表的倒置

    ### 不改变链表储存空间实现单链表的倒置 #### 概述 在计算机科学领域,链表是一种常见的线性数据结构,其中元素不是在内存中连续存储的,而是通过节点之间的指针链接在一起。单链表是最简单的一种链表形式,每个...

    用JAVA写一个倒置单链表的源代码

    用JAVA写一个倒置单链表的源代码,适用于初学者,简单易懂

    单链表的操作 创建 删除 排序 求长度 倒置

    单链表的操作 包括创建 删除 排序 求长度 倒置

    带头结点链表的各种操作(c语言)

    /*把带头结点的单链表倒置(以结点形式 )*/ 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; } ...

    ConsoleApplication3_suggesttmd_C++_

    具体来说,描述指出是关于“不带头结点的单链表倒置的算法与实现”,这将涉及链表数据结构和相关的操作。 在链表的领域,倒置链表是一种常见的操作,它涉及到将链表中的元素顺序反转。不带头结点的单链表意味着链表...

    数据分析,链表相关复习

    #### 五、单链表倒置 给定带头结点的单链表 `head`,倒置链表的过程如下: 1. 初始化指针 `p` 指向第一个数据结点。 2. 将原链表置为空表 `head->next = NULL`。 3. 使用循环结构,每次取出一个结点,并将该结点...

    [详细完整版]数据结构作业.pdf

    5. **单链表倒置**:使用三个指针,将当前节点的next指向前一个节点,同时移动指针。 6. **双向链表插入**:在两个特定节点之间插入新节点,更新前驱和后继指针。 7. **Sample(head)**:该算法实现了一个无表头结点...

Global site tag (gtag.js) - Google Analytics