【问题标题】:Dev-C++ is not showing ant output for this programDev-C++ 没有显示该程序的 ant 输出
【发布时间】:2021-09-16 03:12:40
【问题描述】:

当我在 dev C++ 中运行以下代码时,输​​出为空,即使在线编译器运行良好。我的代码中是否存在特定错误,或者我是否更改了开发 C++ 设置

#include<iostream>
#include<vector>
using namespace std;

class node //node definition
{
    public:
        int data;
        node* next;
        node(int value=0)
        {
            data=value;
            
        }
};

node* insert(node* head,int data)  //node insertion 
{
    node* ins=new node(data);
    if(head==NULL)
    {
        return ins;
    }
    else
    {
        node* ptr=head;
        while(head->next!=NULL)
        head=head->next;
        
        head->next=ins;
        ins->next=NULL;
        return ptr;
    }
    
}

void print(node* head)  //printing the values of linked list
{
    while(head!=NULL)
    {
        cout<<head->data<<" ";
        head=head->next;
    }
}

int main()
{
    vector <int> a{1,2,3,6,8};
    node* list=NULL;
    for(int x:a)
    {

        list=insert(list,x);
    }
    print(list);
}

谁能解决这个问题?

【问题讨论】:

  • 长话短说:我建议在print 函数的末尾添加std::cout &lt;&lt; std::endl;
  • 短篇小说:您不会默认初始化结构的 next 成员。因此,当您第一次调用 insert 时,new 结构的 next 成员可以是任何东西。在线编译器可能会意外地给出 nullptr(零)值,但您不能依赖它。
  • 另外,我建议检查您调用的 exe 文件是否正确。也许它会在某个调试或其他子目录中。请检查您的编译器以获取正确的输出路径设置。只是也许。 . .
  • No head no print,head为null时不分配head。

标签: c++ algorithm data-structures nodes dev-c++


【解决方案1】:

您忘记初始化新分配的nodenext 成员,因此您的列表在第一个节点插入后的末尾有一个未定义的(并且可能是非法的)指针值。

从那时起,程序的行为未定义

修复正在完成构造函数:

        node(int value=0)
        {
            data = value;
            next = nullptr;
        }

【讨论】:

  • 感谢您的帮助。但是我仍然想知道为什么在线编译器即使在下一个没有用 nullptr 初始化的情况下也能正确执行?
  • @manaschinta 未定义行为是未定义的行为。语言标准、特定编译器、运行时库规范或执行环境都没有定义应该或可能发生什么。该程序可能会立即崩溃,或者它可能运行良好。它也可能假装在工作,但会在其他地方默默地破坏其重要数据,并在一些明显不相关的操作中崩溃。行为不必是可预测的,甚至是可重复的。
  • @manaschinta 可能在线编译器使用清除分配器,它用零初始化内存,从而导致指针成员为nullptr(AFAIK,它本身是依赖于实现的) .但这并不能保证,并且根据您的经验,不必在不同的环境或不同的机器上工作相同。它也可能在没有事先通知的情况下发生变化,因为它甚至没有被定义,特定的行为将保持不变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2022-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多