C++ C++;节点类、链表、后进先出、先进先出

C++ C++;节点类、链表、后进先出、先进先出,c++,class,linked-list,C++,Class,Linked List,我必须写一个“程序员友好”的链表。我有两个类,主类和节点类。我的节点类将是我的数据结构,必须包含下面列出的信息。所有节点信息都将包含在节点类中。我的主类应该只是一个调用节点函数的驱动程序 主类应包含: 调用要附加到结构中的节点类的代码,LIFO 调用要附加到结构中的节点类FIFO的代码 调用节点类以显示结构的代码 节点类应执行以下操作: 存储:用户ID、用户名、密码、名字、姓氏、标题和下一个 AppendFIFO函数:将接受1个整数和4个字符串 AppendLIFO函数:将接受1个整数和4

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

主类应包含:

  • 调用要附加到结构中的节点类的代码,LIFO
  • 调用要附加到结构中的节点类FIFO的代码
  • 调用节点类以显示结构的代码
节点类应执行以下操作:

  • 存储:用户ID、用户名、密码、名字、姓氏、标题和下一个
  • AppendFIFO函数:将接受1个整数和4个字符串
  • AppendLIFO函数:将接受1个整数和4个字符串
  • 显示函数:将不接受任何参数
注:

  • 我有两个班和你的主班
  • 在主类中有两个节点对象,一个用于FIFO,另一个用于LIFO
  • 我的节点类是跟踪下一个节点的位置和头部的位置的地方,不要在主类中这样做
  • 不要更改插入节点以获得后进先出结构和先进先出结构的顺序。(例如,我对FIFO和LIFO的第一次附加函数调用都提供了Zackary Moore的信息)
  • 不要更改节点的显示顺序以获得后进先出结构和先进先出结构。您应该只有一个显示功能
  • 必须在主类中插入至少10个用户信息
My 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()
{

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

#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;

};
#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进行正确显示。请帮助

它将引发以下错误:引发异常:读取访问冲突。这是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::AppendLIFO中

所以,当这是null ptr时,您尝试访问head,然后使用未定义的结果执行此操作



目前,您的程序从未创建Node的实例,它不能像这样工作

我很难理解给定的任务,方法的名称令人困惑。但是bruno是对的,不管这些方法如何工作,您必须在某个时候创建一些节点。你目前没有这样做。那么,什么是修复它的最佳方法呢?@kenz但是,这些类和方法配置文件是你自己编写的还是与练习一起提供的?我不明白“main class”@kenz也许你只需要创建第一个实例就可以调用它的AppendXXX来添加下一个实例?第一个实例在创建一个新的存储之后使用存储更新其属性(当然,最好的方法是在专用构造函数中设置属性)。主类是main.cppa文件/函数不是类;-)我鼓励您编辑您的问题,并在其中澄清您的问题以及您必须解决的问题带来的问题,因为其中有一些不一致的地方。(对我来说,现在是凌晨1点睡觉的时间^^)
curNode = head;
curNode = curNode->next;