【问题标题】:doubly linked lists initiallisation双向链表初始化
【发布时间】:2021-01-28 13:20:07
【问题描述】:

你好,所以我对链表和数据结构通常是新的,所以我想创建两个函数,一个初始化双向链表,另一个打印它,但是当我编译它时它不会打印任何我错过的地方(我听说我应该使用调试器,但我不明白如何在 Dev c++ IDE 上使用它)

  #include <iostream>
#include <stdlib.h>
using namespace std;
struct Node
{   int data;
    Node *next;
    Node *previous;
};
Node *head,*end;


Node* insertion()
{   
    Node *first_node =new Node;
    if (head==NULL || first_node==NULL)
        exit(EXIT_FAILURE);
        
    first_node->data=10;
    first_node->previous=NULL;
    first_node->next=NULL;
    head=first_node;
    end=first_node;
    return head;
}
void affiche()
{
    Node *current;
    current=head;
    if(head==NULL)
     exit(EXIT_FAILURE);
    while(current->next!=NULL)
    {
        cout<<current->data <<" ";
        current=current->next;
    }
}
int main()
{

    Node *MyList=insertion();
    affiche();
    return 0;
}

【问题讨论】:

  • 我听说我应该使用调试器,但我不明白如何在 Dev c++ IDE 上使用它 现在是开始学习的最佳时机。调试是编程的关键工具,所以越早使用它,你的生活就会越好。
  • 要使用调试器,您必须有一个断点才能开始调试。
  • 您能否更具体地了解该断点,这是我在调试时不明白如何使用它

标签: c++ c++17 doubly-linked-list


【解决方案1】:

只是改变

while(current->next!=NULL)

while(current!=NULL)

您的版本过早停止打印列表。

(但是请学习如何使用调试器,使用调试器你会很快发现这个错误)。

编辑

您还需要删除它

if (head==NULL || first_node==NULL)
    exit(EXIT_FAILURE);

head==NULL 最初是真的,first_node==NULL 永远不会是真的。 (new 从不返回 NULL)。由于head==NULL 最初为真,因此您的程序总是会在此时退出。

编辑(2)

并删除它

if(head==NULL)
   exit(EXIT_FAILURE);

为什么你认为打印一个空列表是一个错误,意味着你必须退出程序?打印一个空列表是完全可以的。

【讨论】:

  • 谢谢,但它最初和第二个一样,但它没有工作,所以我把它改成第一个,看看它是否能工作
  • 你还有其他错误(真的要学会使用调试器了)。
  • 哦,谢谢兄弟,我已经开始学习如何使用调试器了,谢谢你的解释和建议
猜你喜欢
  • 2015-03-14
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多