欢迎访问宙启技术站
智能推送

使用Java函数实现数据结构中的链表操作的示例代码。

发布时间:2023-11-13 15:11:55

下面是Java函数实现链表操作的示例代码:

// 定义链表节点结构
class ListNode {
    int val;
    ListNode next;

    ListNode(int val) {
        this.val = val;
        this.next = null;
    }
}

// 链表操作类
class LinkedList {
    private ListNode head;

    // 构造函数,初始化链表头节点
    public LinkedList() {
        this.head = null;
    }

    // 判断链表是否为空
    public boolean isEmpty() {
        return head == null;
    }

    // 在链表末尾插入节点
    public void insert(int val) {
        ListNode newNode = new ListNode(val);
        if (isEmpty()) {
            head = newNode;
        } else {
            ListNode curr = head;
            while (curr.next != null) {
                curr = curr.next;
            }
            curr.next = newNode;
        }
    }

    // 在链表指定位置插入节点
    public void insertAt(int val, int position) {
        ListNode newNode = new ListNode(val);
        if (isEmpty() || position == 0) {
            newNode.next = head;
            head = newNode;
        } else {
            ListNode curr = head;
            int count = 0;
            while (count < position - 1 && curr.next != null) {
                curr = curr.next;
                count++;
            }
            newNode.next = curr.next;
            curr.next = newNode;
        }
    }

    // 删除链表末尾节点
    public void delete() {
        if (!isEmpty()) {
            ListNode curr = head;
            ListNode prev = null;
            while (curr.next != null) {
                prev = curr;
                curr = curr.next;
            }
            if (prev != null) {
                prev.next = null;
            } else {
                head = null;
            }
        }
    }

    // 删除链表指定位置节点
    public void deleteAt(int position) {
        if (!isEmpty() && position >= 0) {
            ListNode curr = head;
            ListNode prev = null;
            int count = 0;
            while (count < position && curr.next != null) {
                prev = curr;
                curr = curr.next;
                count++;
            }
            if (count == position) {
                if (prev != null) {
                    prev.next = curr.next;
                } else {
                    head = curr.next;
                }
            }
        }
    }

    // 输出链表内容
    public void display() {
        if (isEmpty()) {
            System.out.println("空链表");
        } else {
            ListNode curr = head;
            while (curr != null) {
                System.out.print(curr.val + " ");
                curr = curr.next;
            }
            System.out.println();
        }
    }
}

public class Main {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();

        // 插入节点
        list.insert(1);
        list.insert(2);
        list.insert(3);

        // 输出链表内容
        list.display(); // 输出:1 2 3

        // 在指定位置插入节点
        list.insertAt(4, 1);

        // 输出链表内容
        list.display(); // 输出:1 4 2 3

        // 删除节点
        list.delete();

        // 输出链表内容
        list.display(); // 输出:1 4 2

        // 删除指定位置节点
        list.deleteAt(1);

        // 输出链表内容
        list.display(); // 输出:1 2
    }
}

以上代码演示了链表的常见操作,包括插入、删除和输出链表内容。在主函数中创建链表对象后,通过调用链表对象的各个方法来实现相应的操作。运行代码后,输出结果为链表的节点内容。