数据结构中如何实现链表的插入和打印

链表的插入操作可以分为两种情况:

  1. 在链表头部插入:此时只需将新节点的next指向原链表头部节点,并将头指针指向新节点即可。
  2. 在链表中间或尾部插入:此时需要先找到待插入节点的前一个节点,将新节点插入到前一个节点的后面,并将前一个节点的next指向新节点。

下面是Python实现链表插入的代码:

class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None

    def insert_at_beginning(self, data):
        new_node = Node(data)
        new_node.next = self.head
        self.head = new_node

    def insert_at_end(self, data):
        new_node = Node(data)
        if self.head is None:
            self.head = new_node
            return
        last_node = self.head
        while last_node.next:
            last_node = last_node.next
        last_node.next = new_node

    def insert_after_node(self, prev_node, data):
        if not prev_node:
            print("Previous node is not in the list")
            return
        new_node = Node(data)
        new_node.next = prev_node.next
        prev_node.next = new_node

    def print_list(self):
        curr_node = self.head
        while curr_node:
            print(curr_node.data)
            curr_node = curr_node.next

链表的打印操作很简单,只需要从头遍历链表,依次输出每个节点的data即可。上述代码中,print_list()函数实现了链表的打印。

对于java,首先,定义一个Node类表示链表中的节点,包含一个数据域和一个指向下一个节点的指针。

public class Node {
    int data;
    Node next;

    public Node(int data) {
        this.data = data;
        this.next = null;
    }
}

然后,在链表类中编写插入和打印链表的方法。

插入方法可以分为两种情况:在链表头插入和在链表尾插入。代码如下:

public class LinkedList {
    Node head;

    //在链表头插入节点
    public void insertAtBeginning(int data) {
        Node newNode = new Node(data);
        newNode.next = head;
        head = newNode;
    }

    //在链表尾插入节点
    public void insertAtEnd(int data) {
        Node newNode = new Node(data);
        if (head == null) {
            head = newNode;
            return;
        }
        Node current = head;
        while (current.next != null) {
            current = current.next;
        }
        current.next = newNode;
    }
}

对于打印链表的方法,可以遍历整个链表并输出每个节点的数据。代码如下:

public class LinkedList {
    ...

    //打印链表
    public void printList() {
        Node current = head;
        while (current != null) {
            System.out.print(current.data + " ");
            current = current.next;
        }
        System.out.println();
    }
}

这样,就可以实现链表的插入和打印了。

你可能感兴趣的:(数据结构,链表)