单链表的增删查改

今天学习了单链表的增删查改,把保存到博客里—_—

public class LinkList { // 该类用于实现链表的增删查改 public Node head = null; // 定义链表头部 public void initialize() {// 该方法用于初始化链表 head = new Node(); // 头部下标是-1 } public int length() {// 返回链表的长度 int length = 0; Node temp = head; while (temp.next != null) { length++; temp = temp.next; } return length; } public void addNode(Node node) {// 在链表尾部添加节点 Node temp = head; while (temp.next != null) { temp = temp.next; } temp.next = node; } public void insertNode(int index, Node node) {// 在指定位置上插入节点 if (!(index >= 0 & index <= length())) { System.out.println("插入的位置不存在"); } else { int length = 0; Node temp = head; while (temp.next != null) { if (index == length) { node.next = temp.next; temp.next = node; return; } length++; temp = temp.next; } temp.next = node; } } public void indexDeleteNode(int index) {// 删除指定位置上的节点 if (!(index >= 0 & index < length())) { System.out.println("删除的下标位置不存在"); } else { int length = 0; Node temp = head; while (temp.next != null) { if (index == length) { temp.next = temp.next.next; return; } length++; temp = temp.next; } } } public void valueDeleteNode(Object o) {// 删除值为o的节点 Node temp = head; while (temp.next != null) { if (temp.next.value.equals(o)) { temp.next = temp.next.next; return; } temp = temp.next; } System.out.println("链表中没有值为" + o + "的节点"); } public int valueSeek(Object o) {// 查找o在链表中的下标,没有返回-1 int index = 0; Node temp = head; while (temp.next != null) { if (temp.next.value.equals(o)) { return index; } index++; temp = temp.next; } return -1; } public void printNode(Node header) {// 该方法用于输出链表 System.out.print("链表"); Node temp = header; while (temp.next != null) { System.out.print("\t" + temp.next.value); temp = temp.next; } System.out.println(); } public void changeValue(int index, Object value) {// 更改指定下标的值 if (!(index >= 0 & index < length())) { System.out.println("更改的下标位置不存在"); } else { int length = 0; Node temp = head; while (temp.next != null) { if (index == length) { temp.next.value = https://www.it610.com/article/value; return; } length++; temp = temp.next; } } } }class Node {// 定义链表的实体类 public Object value = null; public Node next = null; public Node(Object value) { this.value = value; } public Node() { }

链表的测试类,使用前要先初始化—_—
public class LinkListMain { public static void main(String[] args) { LinkList linkList = new LinkList(); linkList.initialize(); // 初始化链表 linkList.addNode(new Node(2)); // 向链表尾部添加节点 linkList.addNode(new Node(3)); linkList.addNode(new Node(4)); linkList.addNode(new Node(5)); linkList.addNode(new Node(6)); linkList.addNode(new Node(7)); linkList.printNode(linkList.head); // 输出链表内容 System.out.println("链表长度" + linkList.length()); // 输出链表长度 linkList.indexDeleteNode(2); // 删除下标为2的节点(下标从0开始) linkList.valueDeleteNode(6); // 删除值为6的节点 System.out.println("删除后"); linkList.printNode(linkList.head); // 输出链表内容 System.out.println("链表长度" + linkList.length()); // 输出链表长度 linkList.insertNode(3, new Node(10)); // 在3下标上添加一个值为10的节点 System.out.println("添加后"); linkList.printNode(linkList.head); // 输出链表内容 System.out.println("链表长度" + linkList.length()); // 输出链表长度 System.out.println("查找链表有没有值为" + 5 + "的节点并返回下标\t" + linkList.valueSeek(5)); System.out.println("查找链表有没有值为" + 11 + "的节点并返回下标\t" + linkList.valueSeek(11)); linkList.changeValue(2, 12); // 将下标为2的节点的值更改为12 System.out.println("更改后"); linkList.printNode(linkList.head); // 输出链表内容 } }

【单链表的增删查改】运行结果—_—
链表 2 3 4 5 6 7 链表长度6 删除后 链表 2 3 5 7 链表长度4 添加后 链表 2 3 5 10 7 链表长度5 查找链表有没有值为5的节点并返回下标 2 查找链表有没有值为11的节点并返回下标 -1 更改后 链表 2 3 12 10 7

么得啦~~~~

    推荐阅读