链接列表创建列表

时间:2014-07-31 14:58:52

标签: c++ linked-list singly-linked-list

这是我的简单链接列表程序的代码块。

void insertFirst(double dd){
        Link* pNewLink = new Link(dd);

        if (isEmpty())
            pLast = pNewLink;

        pNewLink->pNext = pFirst;
        pFirst = pNewLink;

    }

我怀疑Link* pNewLink = new Link(dd);是如何运作的?我知道pNewLink是指向新链接对象的指针。但是我在创建链接列表时没有得到如何创建多个链接以及它们如何连接?

2 个答案:

答案 0 :(得分:3)

new Link(dd)语句正在创建新的链接列表节点而不是新列表。这样,使用pFirst指针,通过将新节点设置为pFirst的下一个指针,将新节点替换为第一个节点。之后,覆盖在链表类中声明的pFirst的内容(如果它是一个类)。

答案 1 :(得分:-1)

这是LinkedList的Java实现

public class SingLyLinkedList 
{
Node head = null;

static class Node {

    int data;
    Node next;

    Node(int x) {
        data = x;

    }

}

public static SingLyLinkedList insert(SingLyLinkedList list, int data) {
    Node temp = new Node(data);
    temp.next = null;

    if (list.head == null) {
        list.head = temp;

    } else {

        Node last = list.head;
        while (last.next != null) {
            last = last.next;

        }
        last.next = temp;

    }

    return list;

}

public static void printList(SingLyLinkedList list) {

    Node currNode = list.head;
    while (currNode != null) {
        System.out.print(currNode.data + "  ");
        currNode = currNode.next;

    }

}

public static void main(String[] args) {
    SingLyLinkedList ll = new SingLyLinkedList();
    ll.insert(ll, 10);
    ll.insert(ll, 20);
    ll.insert(ll, 30);
    ll.insert(ll, 40);
    printList(ll);

}}