【问题标题】:C++ Node class, linked list, LIFO, FIFOC++ 节点类、链表、LIFO、FIFO
【发布时间】:2019-03-20 22:43:00
【问题描述】:

我必须写一个“程序员友好”的链表。我有两个类,你的主类和你的节点类。我的节点类将是我的数据结构,并且必须包含下面列出的信息。所有节点信息都将存放在节点类中。我的主类应该只是调用节点函数的驱动。

主类应包含:

  • 调用节点类以追加到您的结构中的代码,LIFO
  • 调用节点类以追加到您的结构中的代码,FIFO
  • 调用节点类以显示结构的代码

您的 Node 类应该执行以下操作:

  • 存储:用户 ID、用户名、密码、名、姓、头和下一个。
  • AppendFIFO 函数:将采用 1 个整数和 4 个字符串
  • AppendLIFO 函数:将采用 1 个整数和 4 个字符串
  • 显示函数:不带参数

注意事项:

  • 我有 2 个类 Node 和你的主类
  • 我的主类中有两个 Node 对象,一个用于 FIFO,一个用于 LIFO
  • 我的节点类用于跟踪下一个节点的去向和头部的位置,请勿在主类中执行此操作。
  • 不要更改插入节点的顺序以获得 LIFO 结构和 FIFO 结构。 (例如,我对 FIFO 和 LIFO 的第一个附加函数调用提供了 Zackary Moore 的信息)
  • 不要更改显示到节点中的顺序以获得 LIFO 结构和 FIFO 结构。您应该只有一个显示功能。
  • 您必须在主类中插入至少 10 个用户信息。

我的 Node.cpp 代码如下所示:它正在抛出这个错误:抛出异常:读取访问冲突。 这是 nullptr。

#include "stdafx.h"
#include "Node.h"
#include "iomanip"


Node::Node()
{
}


Node::~Node()
{
}
void Node::AppendFIFO(int id, string userName, string password, string fName, string lName)
{

}
void Node::AppendLIFO(int id, string userName, string password, string fName, string lName)
{
    //cout << "Yo" << endl;
    Node *curNode;
    curNode = head;
    cout << "user name:" << userName.length();
    cout << "Password:" << password.length();
    cout << "f name:" << fName.length();
    cout << "l name:" << lName.length();
    while (curNode != nullptr)
    {

        curNode = curNode->next;
    }
}
void Node:: display()
{

}

我的 Node.h 文件看起来像这样

#pragma once
#include "iostream"
#include "string"
#include "iomanip"

using namespace std;

class Node
{
    public:
        Node();
        ~Node();
        void AppendFIFO(int, string, string, string, string);
        void AppendLIFO(int, string, string, string, string);
        void display();

    private:
        int ID;
        string userName;
        string password;
        string firstName;
        string lastName;
        Node *next;
        Node *head;

};

我的 main.cpp 文件代码如下所示

#include "stdafx.h"
#include "iostream"
#include "string"
#include "Node.h"
#include "iomanip"

using namespace std;


int main()
{
    Node *LIFO = nullptr;
    Node *FIFO = nullptr;

    //The 10 users information for LIFO
    LIFO->AppendLIFO(10, "postMalone", "Asdkc34D", "Austin", "Post");
    LIFO->AppendLIFO(9, "h20", "akdjW78v", "Benny", "Washington");
    LIFO->AppendLIFO(8, "testing", "aklc5kaS", "Timmy", "Trump");
    LIFO->AppendLIFO(7, "Rob-by", "robby3939", "Robert", "Malone");
    LIFO->AppendLIFO(6, "TracyLMoore", "Moore098", "Tracy", "Moore");
    LIFO->AppendLIFO(5, "Billybill", "Bb234", "Bill", "Prescott");
    LIFO->AppendLIFO(4, "beth-09", "09ASDN", "Beth", "Richards");
    LIFO->AppendLIFO(3, "Gabe123", "123ilkkSW", "Gabriel", "Smith");
    LIFO->AppendLIFO(2, "sthomas", "sthom56712", "Shannon", "Thomas");
    LIFO->AppendLIFO(1, "bob", "LKJG840", "Bobby", "Steve");
    LIFO->AppendLIFO(0, "zmoore00", "00SDJ", "Zackary", "Moore");

    //The 10 users information for FIFO
    FIFO->AppendFIFO(10, "postMalone", "Asdkc34D", "Austin", "Post");
    FIFO->AppendFIFO(9, "h20", "akdjW78v", "Benny", "Washington");
    FIFO->AppendFIFO(8, "testing", "aklc5kaS", "Timmy", "Trump");
    FIFO->AppendFIFO(7, "Rob-by", "robby3939", "Robert", "Malone");
    FIFO->AppendFIFO(6, "TracyLMoore", "Moore098", "Tracy", "Moore");
    FIFO->AppendFIFO(5, "Billybill", "Bb234", "Bill", "Prescott");
    FIFO->AppendFIFO(4, "beth-09", "09ASDN", "Beth", "Richards");
    FIFO->AppendFIFO(3, "Gabe123", "123ilkkSW", "Gabriel", "Smith");
    FIFO->AppendFIFO(2, "sthomas", "sthom56712", "Shannon", "Thomas");
    FIFO->AppendFIFO(1, "bob", "LKJG840", "Bobby", "Steve");
    FIFO->AppendFIFO(0, "zmoore00", "00SDJ", "Zackary", "Moore");

    system("pause");
    return 0;
}

我无法弄清楚错误有什么问题。我也无法弄清楚如何确定字符串组中最长字符串的长度,然后将其存储以便能够用于 setw 以进行正确显示。请帮助。

【问题讨论】:

  • 我很难理解给定的任务,方法的名称令人困惑。但是 bruno 是对的,但是这些方法应该可以工作,你必须在某些时候创建一些节点。你目前没有这样做。

标签: c++ class linked-list


【解决方案1】:

它正在抛出这个错误:抛出异常:读取访问冲突。这是 nullptr。

你的程序从做开始

int main()
{
    Node *LIFO = nullptr;
    ...
    LIFO->AppendLIFO(10, "postMalone", "Asdkc34D", "Austin", "Post");

并且在 Node::AppendLIFO 中你会这样做

curNode = head;

所以你尝试访问 headthisnullptr,然后你使用未定义的结果来做

curNode = curNode->next;

目前你的程序从不创建 Node 的实例,它不能像那样工作

【讨论】:

  • 那么最好的解决方法是什么?
  • @kenz 但是您是自己编写的类和方法配置文件还是练习附带的?我不懂“主课”
  • @kenz 也许你只需要创建一个第一个实例就可以调用 AppendXXX 来添加下一个实例?第一个实例使用 Store 在新创建它之后更新其属性(即使最好的方法是设置属性当然是在专用的构造函数中)
  • 主类是main.cpp
  • 一个文件/函数不是一个类 ;-) 我鼓励您编辑您的问题,在其中阐明您的内容以及您必须解决的问题的内容,因为有 stange/里面的东西不一致。 (对我来说,现在是凌晨 1 点,所以该睡觉了^^)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 2019-05-10
  • 2021-07-25
  • 1970-01-01
相关资源
最近更新 更多