Итак, эй, у меня проблема с этим проектом. Я должен читать целые числа из файла и вставлять их в список. Есть функция findSpot, которая должна быть реализована, которая пересекает связанный список, и если значение следующего узла больше, чем проверяется, оно возвращает текущее «пятно». И затем мы выводим связанный список в отдельный файл.C++ Singly Linked List Insertion Сортировка
Вот код.
#include <iostream>
#include <fstream>
using namespace std;
class listNode {
public:
int value;
listNode* next;
friend class linkedList;
listNode()
: value(0)
, next(NULL)
{
}
public:
~listNode(){
};
};
class linkedList {
listNode* listHead;
public:
linkedList()
: listHead(NULL)
{
}
bool isEmpty()
{
return (listHead == 0);
}
void listInsert(int data, listNode* spot)
{
listNode* newNode;
newNode->value = data;
newNode->next = NULL;
if (isEmpty()) {
listHead = newNode;
}
else {
newNode->next = spot->next;
spot->next = newNode;
cout << newNode;
}
}
/*void listDelete()
{
}*/
listNode* findSpot(int data)
{
listNode* spot;
spot = listHead;
while (spot->next != 0 && spot->next->value < data) {
spot = spot->next;
}
return spot;
}
void printList(listNode* spot)
{
listNode* newNode = spot;
while (newNode != NULL) {
cout << "Inserting " << newNode->value << ": "
<< "listHead-->(" << newNode->value << "," << newNode->next->value << ")-->(";
newNode = newNode->next;
}
cout << endl;
}
/*~linkedList()
{
listNode* temp = spot->next;
spot->next = spot->next->next;
delete temp;
}*/
};
int main(int argc, char* argv[])
{
int data;
listNode* spot;
ifstream infile;
infile.open(argv[1]);
ofstream outfile(argv[2]);
cout << "Reading Data from the file" << endl;
while (infile >> data) {
cout << data << endl;
}
infile.close();
linkedList myList;
infile.open(argv[1]);
while (infile >> data) {
myList.findSpot(data);
myList.listInsert(data, spot);
myList.printList(spot);
}
cout << "Printing your linked list to the output file.";
/*while (outfile.is_open())
{
myList.printList();
}*/
infile.close();
outfile.close();
return 0;
}
Я не знаю, если проблема заключается главным образом в функции insertList или, если это функция findSpot. Функция findSpot кажется мне верной, но я могу просто что-то упустить.
Поскольку я запускаю код, фактическое считывание файла в первый раз прекрасное. Фактически вставка чего-либо в связанный список заставляет программу зависать.
Почему все пустые строки в вашем коде? Это очень трудно читать. Прежде чем читать что-либо из файла, вы должны проверить, действительно ли ваш связанный список работает с небольшой функцией 'main', которая делает вызовы для вставки записей с жестко закодированными значениями, так что вам легко (и другим) легко диагностировать , Не имеет смысла беспокоиться о чтении файла, если ваш связанный список не работает вообще. – PaulMcKenzie
О, извините, я думаю, это просто странное личное предпочтение. Пустое пространство делает это так, что я могу легко отличить вещи друг от друга. XD – user2444400
Пожалуйста, переформатируйте и повторно запишите свой код правильно. Разве вы не хотите, чтобы ваш код был понятным и максимально читаемым, чтобы другие могли видеть, что вы сделали, и где проблема? –