代码实现
package com.xiaoxuanfeng.dataStructure;// 链表public class Day4_Linked { // 链表节点 public static class Node { int data; Node next; public Node(int data) { this.data = data; } } // 头节点指针 private static Node head; // 尾节点指针 private static Node last; // 链表实际长度 private static int size; // 插入操作 data: 插入的元素 index: 插入的位置 public void insert(int data, int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("下标越界"); } Node insertNode = new Node(data); if (size == 0) { // 空链表 head = insertNode; last = insertNode; } else if (index == 0) { // 插入头部 insertNode.next = head; head = insertNode; } else if (size == index) { // 插入尾部 last.next = insertNode; last = insertNode; } else { // 插入中间 Node prevNode = getNode(index - 1); insertNode.next = prevNode.next; prevNode.next = insertNode; } size++; } // 删除操作 index: 删除的位置 public static Node remove(int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("数组越界"); } Node removeNode = null; if (index == 0) { // 删除头节点 removeNode = head; head = head.next; } else if (index == size - 1) { // 删除尾节点 Node prevNode = getNode(index - 1); removeNode = prevNode.next; prevNode.next = null; last = prevNode; } else { // 删除中间节点 Node prevNode = getNode(index - 1); Node nextNode = prevNode.next.next; removeNode = prevNode.next; prevNode.next = nextNode; } size--; return removeNode; } // 得到前置节点 public static Node getNode(int index) { if (index < 0 || index > size) { throw new IndexOutOfBoundsException("数组越界"); } Node temp = head; for (int i = 0; i < index; i++) { temp = temp.next; } return temp; }}