这是我的简单链表程序中的一段代码。
void insertFirst(double dd){
Link* pNewLink = new Link(dd);
if (isEmpty())
pLast = pNewLink;
pNewLink->pNext = pFirst;
pFirst = pNewLink;
}
我的疑问是Link* pNewLink = new Link(dd);
是如何工作的?我知道pNewLink是指向新链接对象的指针。但我没有得到,而创建一个链表是如何创建多个链接,他们是如何连接?
new Link(dd)语句创建一个新的链表节点,而不是一个新的链表。因此,使用pFirst指针,您可以通过将新节点的下一个指针设置为pFirst来替换新节点作为第一个节点。之后,覆盖在链表类(如果它是一个类)中声明的pFirst的内容。
这是java实现的LinkedList
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);
}}