Я знаю, что весь код не работает, но когда я впервые запускаю программу, а первая строка считывается из текстового поля, ошибки программы выходят. Основная функция - передать строку «Вставить list function "в реализации. Программа должна вставлять узел каждый раз, когда строка считывается из текстового файла. Вызов программы также вызывает функцию удаления, которая, как я знаю, еще не работает (поэтому она закомментирована). Я просто пытаюсь найти ошибку, которая создается при вызове функции insert. Основная функция имеет цикл while, который создает узел для каждой текстовой записи и передает узел один за другим для сортировки в порядке ABC.Упорядоченные ошибки со связанными списками
Заголовочный файл:
#include <string>
using namespace std;
struct Node
{
string data;
Node * next;
};
class List
{
public:
List();
~List();
bool Insert(string);
bool Delete(string);
void Print();
bool Edit(string, string);
private:
Node * head;
Node * cur;
Node * trailer;
};
Реализация:
#include <iostream>
#include <string>
#include <fstream>
#include "List.h"
using namespace std;
List::List():head(NULL)
{}
List::~List()
{}
bool List::Insert(string data)
{
Node* newNode = new Node;
if (newNode == NULL)
{
cout << "Error: Memory Allocation Failed" << endl;
return false;
}
newNode->data = data;
cur = head;
trailer = NULL;
if (head == NULL)
{
//cout << "head is Null" << endl;
head = newNode;
cout << head -> data << endl;
newNode->next = NULL;
//return true;
}
while (newNode->data > cur->data && cur -> next != NULL)
{
trailer = cur;
cur = cur->next;
}
if (cur->next == NULL)
{
cur->next = newNode;
newNode->next = NULL;
return true;
}
else
{
trailer->next = newNode;
newNode->next = cur;
return true;
}
}
bool List::Delete(string data)
{
/*Node *temp = head->next;
while (head != NULL)
{
delete head;
head = temp;
temp = head->next;
}
return true;*/
}
bool List::Edit(string dataDelete, string dataInsert)
{
Delete(dataDelete);
Insert(dataInsert);
return true;
}
void List::Print()
{
for (Node * Count = head; Count != NULL; Count = Count->next)
{
cout << Count->data << endl;
}
}
Спасибо, ребята. Еще один вопрос, список, который я сортировал, не был полностью отсортирован в порядке abc. тестовый список, который я использовал, это: оплатить счета, сделать стоматологическую аппту, ежедневное чтение Библии, получить оценку на ремонт автомобилей, почтовые благодарности, принять тест. Список сортировался и выводился следующим образом: ежедневное чтение Библии, оценка на машине, заметки по почте, оплата счетов, изготовление зубных апплетов, тест. –
@MatthewDanielSorrell Произошла ошибка в коде, я обновил свой ответ. – NikolayKondratyev
Большое спасибо! @NikolayKondratyev –