經過一段時間的打破我的頭腦後,我正在尋求幫助。也許我在這裏做了一些非常愚蠢的事情。以下是鏈表的基本實現。但是,它似乎並不奏效。有人可以看看嗎?這個鏈表實現有什麼問題?
編輯:通過不工作我的意思是它進入無限循環在添加功能的其他部分。
#include <iostream>
struct node
{
int data;
node* link;
};
void add(struct node** list, int i)
{
//populate a node
node* tempNode = (node*) malloc(sizeof(node));
tempNode->data = i; //**This does not seem to initialize data**
tempNode->link = NULL; //**Same here**
//check if the list is empty
if(*list == NULL)
{
//create the node
*list = tempNode;
}
else
{
while((*list)->link != NULL); //Enters in to an endless loop here because the link is not initialized
(*list)->link = tempNode;
}
}
void print(node** list)
{
node* itr = *list;
while(itr != NULL)
{
std::cout << itr->data << "\n";
itr = itr->link;
}
}
int main()
{
node* linkedList = NULL;
node** t = &linkedList;
add(&linkedList, 10);
add(&linkedList, 20);
add(&linkedList, 30);
add(&linkedList, 40);
print(&linkedList);
}
請你的意思是「不行」是什麼更多的描述。我們看不懂頭腦:) – hugomg
對不起我的壞。將其添加到編輯 – koobi
在一般情況下,您應該檢查'malloc'是否返回NULL以防止出現分段錯誤。 – keks