Ошибка сегмента при попытке распечатать узлы связанного списка - PullRequest
0 голосов
/ 25 апреля 2020

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

Заголовочный файл:

class List
{
private:
    struct ContactNode {
        std::string firstName;
        std::string lastName;
        std::string phoneNumber;
        struct ContactNode* next;
    };
    ContactNode* head;
public:

    List();
    ~List();
    void insert(std::string phoneNumber, std::string firstName, std::string lastName);
    void deleteNode(std::string firstName, std::string lastName);
    void print();
};

Функция вставки:

void List::insert(std::string phone_Number, std::string first_Name, std::string last_Name)
{
    ContactNode* newNode;
    ContactNode* nodePtr;
    ContactNode* previousNode = nullptr;

    newNode = new ContactNode;
    newNode->firstName = first_Name;
    newNode->lastName = last_Name;
    newNode->phoneNumber = phone_Number;


    if (!head)  // head points to nullptr meaning list is empty
    {
        std::cout << "Inserted to head node!" << std::endl << std::endl;
        head = newNode;  // head now points to the new node
        newNode->next = nullptr;
    }
    else // otherwise look for the right place to insert node
    {
        nodePtr = head;
        previousNode = nullptr;
        while (nodePtr != nullptr && newNode->lastName.compare(nodePtr->lastName) > 0)
        {
            previousNode = nodePtr;
            nodePtr = nodePtr->next;
        }
        if (previousNode == nullptr) // if the new node is to be the first in the list
        {
            head = newNode;
            newNode->next = nodePtr;
        }
        else // otherwise insert after the previous node
        {
            previousNode->next = newNode;
            newNode->next = nodePtr;
        }
    }
}

Функция печати: я получаю ошибки сегмента в то время как я oop, когда я пытаюсь распечатать атрибуты узлов в списке.

void List::print()
{
    ContactNode *temp = this->head;
    if (!temp) {
        std::cout << "No contacts in the phone book!" << std::endl << std::endl;
        return;
    }
    //Prints header
    std::cout << std::left << std::setw(30) << "Last Name" << std::setw(30) << "First Name" << std::setw(30) << "Phone Number" << std::endl;
    std::cout <<  std::setw(30) << "==========" << std::setw(30) << "=========" << std::setw(30) << "============" << std::endl;

    //Prints all contacts
    while (temp) {
        std::cout << std::setw(30) << temp->lastName << std::setw(30) << temp->firstName << std::setw(30) << temp->phoneNumber << std::endl;
        temp = temp->next;
    }
    std::cout << std::endl << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...