0

在下面的代码中,我试图理解insertFirst()方法中的一件事

为什么是最后一个陈述first =newLink;而不是first.next=new Link; 它会错吗?一开始不是有“下一个”吗?

我知道这段代码是正确的,我知道需要在开头插入一个节点,但我需要帮助理解一个语句。

是不是first =newLink;first.next=new Link;不一样的东西?

public class LinkedList {

    private Link first;

    public LinkedList()
    {
        first = null;
    }

    public boolean isEmtpy()
    {
        return(first==null);
    }

    public void insertFirst(int id, int dd)
    {
        Link newLink=new Link(id,dd);
        newLink.next=first;
        first =newLink;
    }


}
4

5 回答 5

3

不,它是正确的:列表在开头插入新链接。旧的“第一”成为新环节的“下一个”,新的环节就是新的“第一”。

于 2011-03-29T18:34:20.320 回答
2

为什么是最后一个语句first =newLink;而不是first.next=new Link;

因为您要插入一个新的第一个元素,而“下一个”元素是旧的第一个元素,它是在前一行设置的。

是第一个=newLink; 和 first.next=new 链接;不是一回事吗?

first是第一,first.next是第二。

于 2011-03-29T18:36:07.713 回答
0

这是因为您想将新元素放在开头,因此您必须将新元素设置为列表的头部,并且该元素应该指向“旧头”,然后您有:

new_elemnt->old_head->...
于 2011-03-29T18:35:13.920 回答
0

LinkedList::first不是保护元素。它确实指向列表的第一个元素。如果LinkedList::first == null,则列表为空。如果Link::next == null,则它是最后一个元素(在这种情况下null称为保护元素)。

于 2011-03-29T18:37:58.073 回答
0

Java中SingleLinkedList的简单示例

    package com.ds;

    public class SingleLinkedList {


        private Node head;

        public static void main(String[] args) {
            SingleLinkedList linkedList = new SingleLinkedList();
            linkedList.insert(5);
            linkedList.insert(15);
            linkedList.insert(45);
            linkedList.insert(55);
            linkedList.insert(58);
            linkedList.insert(25);

            // Print value of Single Linked list.
            linkedList.print();
            // delete node from tail side.
            linkedList.delete();
            linkedList.delete();
            linkedList.delete();
            linkedList.delete();
            linkedList.delete();
            /*linkedList.delete();
            linkedList.delete();
            linkedList.delete();
            linkedList.delete();*/
            linkedList.print();

        }

        SingleLinkedList() {
            head = null;
        }

        void insert(int val) {
            Node temp = new Node();
            temp.data = val;
            temp.next = null;
            if (head == null) {
                head = temp;
            } else {
                Node k = head;
                while (k.next != null) {
                    k = k.next;
                }
                k.next = temp;
            }
        }

        // delete from tail.
        void delete() {
            // if it's first node
            if (head == null || head.next == null) {
                head = null;
            } else {
                Node n = head;
                Node t = head;
                while (n.next != null) {
                    t = n;
                    n = n.next;
                }
                t.next = null;
            }

        }

        void print() {
            Node k = head;
            while (k != null) {
                System.out.println(k.data);
                k = k.next;
            }
        }

       Node reverse() {
            Node h = head;
            Node p = null;
            Node t = null;
            while (h != null) {
                t = h.next;
                h.next = p;
                p = h;
                h = t;
            }
            return p;
        }

        class Node {
            private int data;
            private Node next;
        }
    }
于 2017-08-29T04:03:53.673 回答