链表的逆转 -- java实现

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

  链表的逆转也算是面试中比较常见的问题了,今天闲来无聊,就写了一下一个简单的实现。

  这里我并没有用java里面的LinkedList类来写,而是自己写了个简单的链表结构,这里只是用来建一个链表,具体的操作方法并没有详写:

  

package normal;

public class LL {
	
	public Node head;
	
	class Node{
		String value;
		Node next;
		public Node(String value){
			this.value = value;
		}
	}
	
	public LL(String[] arr){
		if(arr.length != 0){
			Node node = new Node(arr[0]);
			this.head = node;
			for(int i=1; i<arr.length; i++){
				node.next = new Node(arr[i]);
				node = node.next;
			}
		}
		else
			this.head = null;
		
	}
	
	public Node add(String value){
		return head;
	}
}
  然后是具体的链表逆转的操作:

package normal;

import java.util.LinkedList;

import normal.LL.Node;

public class ReverseLL {
	
	

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 ReverseLL o = new ReverseLL();
		 LL ll = o.createLL();
		 Node node = o.reverse(ll);
	}
	
	private Node reverse(LL ll) {
		// TODO Auto-generated method stub
		Node pre = null;
		Node cen = ll.head;
		Node pos = cen.next;
		while(cen!=null){
			cen.next = pre;
			pre = cen;
			cen = pos;
			if (pos!=null)  pos = pos.next;
		}
		return pre;
	}

	public LL createLL(){
		String[] arr = {"1","2","3","4","5"};
		LL ll = new LL(arr);
		
		return ll;
	}
	
}
最后的node即是所得逆转链表的head节点。

  




java实现链表逆转(附完整源码) 阅读详情

相关推荐

Java链表反转 详细过程

Java链表反转 Java实现链表翻转 使用递归法实现链表反转,使用遍历反转法:递归反转法是从后往前逆序反转指针域的指向,而遍历反转法是从前往后反转各个结点的指针域的指向。     【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/51113133 (一)单链表的结点结构:        data域:存储数据元素信息的域称为数据域;        next域:存储直接后继位置的域称为指针域,它是存放结点的直接后继的地址(位置

AI吃大瓜的博客 9万+

【算法】Java链表逆转

链表逆转置的递归与非递归方式 Node类 public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } 先看递归求解: public ListNode reverse1(ListN...

weixin_33767813的博客 526

java实现链表逆转

java实现链表翻转最简答的思路,就是假设每个节点都有一个pre,一个next,而这个pre和next就是我们的当前节点的前后位置 我们在遍历当前节点的时候,顺便将pre和next构造出来。这样就可以实现链表翻转了。 代码如下: public class Reverse { //单链表 static class ListNode{ int val; ...

qq_41184055的博客 1826

java实现链表逆转(附带源码)

java实现链表逆转(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1234

java 链表逆转_java 实现链表逆转详解及实例代码

java 实现链表逆转详解实例代码:class Node {Node next;String name;public Node(String name) {this.name = name;}/*** 打印结点*/public void show() {Node temp = this;do {System.out.print(temp + "->");temp = temp.next;}...

weixin_34802266的博客 203

java 链表逆转_链表反转(Java三种实现方式)

链表这个数据结果经常遇见,这里提供一个链表反转java代码实现,有三种算法,一种是递归的,俩种是非递归的。首先为了方便测试,在博文最后贴上递归实现链表创建的代码,以供读者快速上手测试,提供的代码可以复制以后直接测试先看看Node节点把public class Node {//链表用于存储值private final int value;//指向下一个节点 理解为Node next更加恰当pri...

weixin_42527665的博客 372

java链表逆置_java 实现链表逆转详解及实例代码

java 实现链表逆转详解实例代码:class Node {Node next;String name;public Node(String name) {this.name = name;}/*** 打印结点*/public void show() {Node temp = this;do {System.out.print(temp + "->");temp = temp.next;}...

weixin_39571938的博客 366

Java转置_Java实现链表逆转

链表逆转置的递归与非递归方式package link.reverse;// 定义一个单链表class Node {//变量private int record;//指向下一个对象private Node nextNode;public Node(int record) {this.record = record;}public int getRecord() {return record;}pu...

weixin_35668334的博客 296

Java实现链表逆转

链表逆转置的递归与非递归方式package link.reverse; // 定义一个单链表 class Node { //变量 private int record; //指向下一个对象 private Node nextNode; public Node(int record) { t...

weixin_33763244的博客 107

java链表逆转_java实现链表逆转

Reverse Linked List Reverse a singly linked list. click to show more hints. /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : va...

weixin_35927318的博客 527

原地逆转链表java_原地逆转链表

逆转一个链表 参数:头结点指针的下一个指针(因为头指针是不逆转的) 比如这样一个链表head->1->2->3->4 逆转后是head->4->3->2->1 所以传入1这个结点......作业题目:逆转线性表 数据结构描述:采用数据的链式存储 算法描述:,创建 head 指针对线性表进行链式存储。先判断是否为空链表或是单节点链表, 若是则不需做任何...

weixin_39951929的博客 768

链表逆转

1.算法描述           单链表逆转,就是把链表中 各结点的next域改为指向其前驱结点,原先第一个结点的next域为空,head改为指向原先的最后一个结点。逆转算法描述如下:           设p指向单链表中的某个结点,front指向p的前驱结点,则使p.next指向前驱的语句是

亡羊补牢 7664

链表合并java代码_逆转交替合并两个链表的解析与实现

逆转交替合并两个链表,即从一个链表的尾指针指向另一个链表的尾指针,依次逆转交替进行合并。下面就通过实例来详细的介绍该逆转交替合并两个链表的思路与实现代码。一、问题描述链表A和BA: 1->2->3->4B: a->b->c->d请逆转交替合并两个链表,示例结果如下:4->d->3->c->2->b->1->a节点类型定义...

weixin_30802399的博客 280
上一篇: 一致性hash
下一篇: prime counting/质数计算
zh0621
博客等级 码龄16年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值