在這種情況下,我需要實現addFront()
方法,該方法是在鏈表的前面添加一個整數。我是否正確添加鏈接列表前的項目
class Node{
public:
int data;
Node* next;
Node* prev;
}
class List {
void addFront(int item);
protected:
Node* dummyNode;
int numItems; //number of item is the linkedlist
};
下面是我傾向於實行addFront()
:
void addFront(int data){
Node* head = new Node();
if(numItems == 0) //if no item in the list.
{
//Set the head node to be dummyNode
head = dummyNode;
//Because the next node the head is pointing to is NULL.
head -> next = NULL;
}
//Create a new node.
Node* newNode = new Node();
//Set value
newNode->data = data;
//Let the previous pointer of dummyNode points to newNode.
head->prev = newNode;
//Re-set head to be newNode.
head = newNode;
numItems++;
}
上午我做正確?如果不是,爲什麼?如果是的話,有沒有更好的方法來做到這一點?
這功課嗎? –
@JohnDibling這取決於你。 – FlowerFire
不可以。對於其中一種情況,您在初始插入時泄漏了內存。您也沒有將'dummyNode'初始化爲'List'構造的nullptr。在取消引用之前,您從不檢查'dummyNode'是否爲nullptr。這甚至沒有試圖運行這個。 (a)不,(b)因爲你不知道如何編寫一個鏈表,(c)最後一個問題在前兩個問題之後是沒有意義的。並且否認第一個問你任何關於這個問題的人是不是開始工作的方式。 – WhozCraig