当前位置: 首页 > 知识库问答 >
问题:

创建双链表

阎庆
2023-03-14

我只想创建双链接列表并检查它是否为空。请说出错误。显示的错误是:在函数empty()中,head和tail超出范围。在类Dict中定义为struct时不起作用。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

class node
{   public:
    string data;
    node* next;
    node* prev;
    friend class Dict;
};

class Dict
{   public:
    bool empty();
    Dict();
    node* head;
    node* tail;

};

Dict::Dict()
{   head=new node;
    tail= new node;
    head->next=tail;
    tail->prev=head;

}

bool empty()
{
    return head->next==tail;
}

int main()
{
    Dict my_list;
    if(my_list.empty())
        {cout<<"empty list"<<endl;}
    else
        {cout<<"Not empty"<<endl;}
}

共有3个答案

鄢雅畅
2023-03-14
  • 有几件事你需要做。首先,您没有包括节点。cpp只有一个节点。h、 你的节点构造函数做什么?在Dict()构造函数上,您应该调用节点构造函数,即node(),这将初始化节点类,使其符合节点构造函数所做的任何操作,即将变量字符串数据设置为某个输入值
爱琪
2023-03-14

首先,您没有创建空列表,因为您的构造函数创建了新节点。

在“empty”方法中,您试图引用Dict类中定义的“head”变量

可能的修复:

Dict::Dict()
{
    head = tail = null;
}

bool Dict::empty()
{
    return head == null;
}
东方俊杰
2023-03-14

我认为您只需要在类中包含empty方法:

bool Dict::empty()
{
    return head->next==tail;
}
 类似资料:
  • 我一直试图利用我以前的单链表来创建双向链表。因此,在Node类中,我添加了以前的节点引用,并更新了类中的和方法,以适应在列表类中的来回。将新节点放在当前节点之后,并将新节点放在列表类中当前节点之前;这是因为我想在DoublyLinked中以升序添加和插入我的值列表类。[这可能听起来很混乱,但我会在下面发布代码]当我测试我的方法[在类]我得到一个空指针异常。 正如我所说,我已经为此工作了几天,所以在

  • 我已经获得了创建双链接列表的起始代码。我遇到的问题是实现一个函数,在“head”处插入一个新创建的节点。 链表中的节点是以下结构: 头部插入的代码如下: 现在的问题是,每当我插入一个项时,我应该创建一个具有不同内存地址的新类对象。我在上面所做的更新了相同的内存位置。我需要知道如何创建一个新的类对象。

  • 我试图初始化一个双链接列表,其中包含另一个双链接列表中的虚拟节点(也包含虚拟节点)。例如,学生列表中的一个节点有许多朋友存储在该节点内的链接列表中。这是我的代码: 当我试图编译它时,它告诉我:警告:来自不兼容指针类型的赋值。它出现在我发表评论的台词上。请帮忙^^ 编辑:谢谢鸭嘴兽!

  • 问题内容: 我必须链接两个容器,以便它们可以互相看到。当然以下… …在第1行失败,因为容器需要启动并运行才能成为链接目标: 创建双向链接的最简单方法是什么? 问题答案: Docker 1.10通过引入高级容器网络很好地解决了这一问题。(详细信息:https : //docs.docker.com/engine/userguide/networking/dockernetworks/) 首先,创建一

  • 整个系统的第一条链是由开发团队创建,创建过程和其他区块链系统一样。 其他的链都是通过“创链交易”创建的。 每条链允许创建2条子链,只要条件满足,任何人都可以创建。 第二条和第三条链的创建没有限制,任何人随时可以创建。 后续链的创建,需要满足以下几个条件: 链的平均区块大于300K(近期平均值),避免无限制创建。 需要花费代币,代币量最大为区块奖励的一万倍,平均交易量越大,花费越低。 子链不存在才能

  • 我写了一个程序,通过双链表管理银行账户,但我发现取消程序有问题。 我仍然有同样的问题,即使我尝试了这个方法:-(pnt)-