package day14; /** * @version 1.0 * @ClassName Test02 * @category javaSE * @QQ 1826286736 * @Author ${每特教育JY-010-小萌新} * @Date 2021/11/24 16:26 **/ public class Test02<E> { private E e; Test02<E> Next; public static void main(String[] args) { /** * 链表数据结构特点:增删效率非常高、查询效率非常低,时间复杂度为o(n) * 单向链表的定义:当前元素指向下一个元素 1 → 2 → 3 → 4 * 双向链表的定义:当前元素指向上一个元素的同时也指向下一个元素 1 ←→ 2 ←→ 3 ←→ 4 */ Test02<String> node01 = new Test02<>(); node01.e = "mayikt"; Test02<String> node011 = new Test02<>(); node011.e = "meite"; Test02<String> node012 = new Test02<>(); node012.e = "6666"; Test02<String> node013 = new Test02<>(); node013.e = "tianxj"; node01.Next = node011; node011.Next = node012; node012.Next = node013; System.out.println(node01.e); System.out.println("------"); ergodic(node01); Test02<String> node014 = new Test02<>(); node014.e = "douyyy"; addElement(node013, node014); ergodic(node01); System.out.println("---删除后的链表---"); /** * 删除链表是非常简单的 * 直接把想要删除的节点的上一个节点改为指向想要删除的节点的下一个节点 * node01.Next = node011;改为node01.Next=node012; * node011节点就删除了 */ node01.Next=node012; ergodic(node01); } public static void ergodic(Test02<?> n00) { /** * 这是遍历链表的方法 * 通过while循环取出每一个节点 */ // 把传递的头节点n00赋值给临时节点n001 Test02<?> n001 = n00; // while (n001 != null) { System.out.println(n001.e); // 把临时节点的下一个节点n001.Next赋值给临时节点n001 n001 = n001.Next; } } public static void addElement(Test02<String> TailNode, Test02<String> newNode) { /** * 这是新增元素的方法 * 传递一个尾结点,一个新增的节点 最后一个节点.next 就是我们新增的节点 * 找到最后一个元素,最后一个元素.next * 链表不用考虑扩容性 */ // 最后一个节点.next 就是我们新增的节点 TailNode.Next=newNode; System.out.println("-----新增后的链表-----"); } }
链表数据结构1
最新推荐文章于 2024-08-12 16:47:32 发布