你能发现这个链表代码中的4个错误吗?

时间:2012-12-14 17:11:05

标签: linked-list nodes

我刚刚接受了测试,我只能发现2,我们的教授在返回时没有给我们正确的答案..想知道你们是否可以帮助我发现这个代码中的4个错误链接列表... < / p>

int main() {
  struct node 
 {
     int data;
     node * next; 
 }

// create empty list
node * list;

// insert six nodes at front of list
node *n;
for (int i=0;i<=5;i++)
{
  n = new node;
  n->data = i;
  n->next = list;
}
// print list
n = list;
while (!n) 
{
  cout << n->data << "  ";
  n = n->next; 
}
cout << endl;

4 个答案:

答案 0 :(得分:5)

  • struct node在声明结尾处遗漏;
  • list未初始化为NULL
  • list未指向节点插入后的头部
  • 未检查节点分配是否成功
  • 打印循环不正确 - 应该是while(n)而不是while(!n)

答案 1 :(得分:2)

您需要初始化列表

 list = NULL;

你总是指定n-&gt;列表旁边,但永远不会给列表一个值。

for (int i=0;i<=5;i++)
{
  n = new node;
  n->data = i;
  n->next = list;
  list=n;
}

应该没有!或者它不会打印任何东西。

while (!n) 

答案 2 :(得分:1)

脱离我的头顶(有些人已经注意到了......):

    {li> ;定义后没有struct
  1. list未初始化
  2. list分配给每个next指针,但从未更新
  3. nlist分配的(未初始化的)值会丢弃您目前所做的任何事情(内存泄漏)
  4. main()缺少结尾}(如果您没有发帖,可能不会出错)
  5. while循环上的错误条件 - 仅在n == 0
  6. 时循环

答案 3 :(得分:0)

错误

1。node * list

因为所有节点都指向同一个指针。它们都只指向一个项目(它不会使它成为一个列表)

2。while(!n)

应该是while(n)或什么都不打印

3.list永远不会分配给任何东西

node * list创建一个空列表,但此列表未初始化为null

4. struct node错过分号;

5.Post初始化node * list仍然是空的,无处可去。所有节点现在都指向它,代码分解为无政府状态!