经过一段时间的打破我的头脑后,我正在寻求帮助。也许我在这里做了一些非常愚蠢的事情。以下是链表的基本实现。但是,它似乎并不奏效。有人可以看看吗?这个链表实现有什么问题?
编辑:通过不工作我的意思是它进入无限循环在添加功能的其他部分。
#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