2

我刚拿到我的测试,我只能发现 2 并且我们的教授在返回时没有给我们正确的答案..想知道你们是否可以帮助我发现此代码中的 4 个错误以获取链接列表...

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

4 回答 4

5
  • struct node;在它的声明末尾丢失
  • list未初始化为NULL
  • list插入节点后不指向头部
  • 未检查节点分配是否成功
  • 打印循环不正确 - 应该while(n)代替while(!n)
于 2012-12-14T17:23:30.073 回答
2

你需要初始化列表

 list = NULL;

您总是将 n->Next 分配给列表,但从不给列表一个值。

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

它应该没有!否则它不会打印任何东西。

while (!n) 
于 2012-12-14T17:18:07.613 回答
1

在我的脑海中(有些已经被其他人注意到了......):

  1. 没有定义;struct
  2. list未初始化
  3. list分配给每个next指针,但从未更新
  4. n分配的(未初始化的)值list会丢弃您迄今为止所做的任何事情(内存泄漏)
  5. main()缺少结尾}(如果您没有发布更多内容,可能不是错误)
  6. 循环中的错误条件while- 仅循环 whilen == 0
于 2012-12-14T17:29:27.213 回答
0

错误

1.node * list

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

2.while(!n)

应该是 while(n) 否则不会打印任何内容

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

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

4.struct node漏掉分号;

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

于 2012-12-14T17:26:09.307 回答