Класс узла C ++, связанный список, LIFO, FIFO - PullRequest
0 голосов
/ 21 марта 2019

Я должен написать «дружественный к программисту» связанный список. У меня есть два класса, ваш основной класс и класс вашего узла. Мой класс узла будет моей структурой данных и должен содержать информацию, указанную ниже. Вся информация об узле будет размещена в классе узла. Мой основной класс должен быть только драйвером для вызова функции узла.

Основной класс должен содержать:

  • Код для вызова класса узла для добавления в вашу структуру, LIFO
  • Код для вызова класса узла для добавления в вашу структуру, FIFO
  • Код для вызова класса узла для отображения вашей структуры

Ваш класс Node должен выполнять следующие операции:

  • Магазин: идентификатор пользователя, имя пользователя, пароль, имя, фамилия, руководитель и следующий.
  • Функция AppendFIFO: примет 1 целое число и 4 строки
  • Функция AppendLIFO: примет 1 целое число и 4 строки
  • Функция отображения: не будет принимать аргументов

ПРИМЕЧАНИЯ:

  • У меня есть 2 класса Node и ваш основной класс
  • У меня есть два объекта Node в вашем основном классе, один для FIFO и один для LIFO
  • Мой класс узлов - это место, где вы будете отслеживать, где находится следующий узел и где находится голова, не делайте этого внутри вашего основного класса.
  • Не меняйте порядок, в котором вы вставляете свои узлы, чтобы получить структуру LIFO и структуру FIFO. (Например, мой первый вызов функции добавления для FIFO и LIFO содержит информацию для Закари Мура)
  • Не меняйте порядок отображения в ваших узлах, чтобы получить структуру 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;
}

Я не могу понять, что не так с ошибкой. Я также не могу понять, как определить длину самой длинной строки в группе строк, а затем сохранить ее, чтобы можно было использовать ее для правильного отображения. Помогите, пожалуйста.

1 Ответ

0 голосов
/ 21 марта 2019

Выдает эту ошибку: Исключение выдается: нарушение прав чтения.это был nullptr.

Ваши программы начинаются с

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

и в Node :: AppendLIFO вы делаете

curNode = head;

, поэтому вы пытаетесь получить доступ к head , в то время как это равно nullptr , затем позже вы используете неопределенный результат дляdo

curNode = curNode->next;

В настоящее время ваша программа никогда не создает экземпляр Node , она не может так работать

...