
首先,我们必须弄清楚链表是什么?首先看一下定义:
在讨论链表之前,让我们先讨论一下Java内存的分配: 当我们创建新对象时,我们将为java堆中的对象分配内存,当我们调用该方法时,该方法将被加载到方法区域,在方法区域中,保存加载类信息,常量,静态变量等. 为了理解这一点java 链表,让我们再次讨论链接列表.

链表是物理存储单元上的非连续,非顺序存储结构. 数据元素的逻辑顺序是通过链接列表中的指针链接顺序实现的. 链表由一系列节点(链表中的每个元素称为节点)组成,可以在运行时动态生成. 每个节点包括两部分: 一个是存储数据元素的数据字段,另一个是存储下一个节点地址的指针字段. 估计此定义过于书面java 链表,对于初学者来说很难理解. 实际上,它只是酱紫色. 我们创建了一个类Node. 此类中有两个变量,一个数据用于存储数据,第二个类型为Node的变量用于存储Java堆中另一个对象的地址. 然后,Node类的许多对象都是新对象,我们通过setNext方法将第二个对象node2的地址保存到node1,类似地,将第三个对象node3的地址移交给node2. 这样,我们将许多对象连接成一个字符串,形成一个链. 这是链接列表.
以下是语句: 在Java中,没有地址,只有hashCode. 实际上,hashCode是一种将每个对象的地址转换为代码并转换为唯一字符串的算法. 当我们不覆盖Object类的toString方法时,此类的对象将调用toString方法并打印它,或者不调用toString方法而直接打印该类的对象,实际上,它会打印hashCode. 此hashCode等效于内存.

上一张图片:
可能无法很好地理解:

迭代方法. 首先记录下一个节点,然后让当前节点指向上一个节点,然后记录当前节点,然后让下一个节点成为当前节点.


代码:
1个包com.atguigu.reverse; 2 3 public class LinkedList {4 public static void main(String [] args){5 Node node = new Node(1); 6 node.next =新节点(2); 7 node.next.next =新节点(3); 8 node.next.next.next =新的节点(4); 9节点res =反向(节点); 10 System.out.println(res); 11} 12 13 public static Node reverse(节点节点){14 //如果链表中没有元素,如何返回空值. 15 if(node == null){16返回null; 17} 18 19 //如果链表只有一个元素,则不必反向,只需返回链表本身即可. 20 if(node.next == null){21返回节点; 22} 23 24 //当链表超过两个或更多时,您需要反转25 Node pre = null; //前一个用来保存当前节点的节点26 Node cur = node; // cur保存当前节点27 28 while(cur!= Null){29 Node next = cur.next; //获取当前节点的下一个元素30 cur.next = pre; //将当前节点的下一个指向上一个元素31 pre = cur; //将当前节点更改为上一个节点(实际上,将前一个元素移了一位).
32 cur =接下来; //将当前节点的下一个节点更改为当前节点(实际上,前一个元素移位了一位). 33} 34 35 // Pre是反转后的第一个节点,因此返回pre. 36个返回pre; 37} 38} 39 40类Node {41 public Integer data;接下来是42个公共节点; 43 public Node(Integer data){44 super(); 45 this.data =数据; 46} 47 @Override 48 public String toString(){49返回“节点[data =“ + data +”,next =“ + next +”]“; 50} 51}
好.......
作者: wss96
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-205273-1.html
吨位也大了
好有范
第四就把海警舰队扩