C ++节点类,链接列表,LIFO,FIFO

时间:2019-03-20 22:43:00

标签: c++ class linked-list

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

主类应包含:

  • 调用节点类以附加到您的结构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以便正确显示。

1 个答案:

答案 0 :(得分:0)

  

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

您的程序首先要做

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

,然后在 Node :: AppendLIFO 中完成

curNode = head;

因此您尝试在 this nullptr 时访问 head ,然后稍后使用未定义的结果进行

curNode = curNode->next;

当前,您的程序永远不会创建 Node 的实例,它不能那样工作