mayashah Ответов: 2

Сортировка в связанном списке отладчиком проверена!!


- Эй !! я прочитал все ваши комментарии и понял!! я знаю, как работает отладчик и все такое, но проблема в том, что я хочу отсортировать связанный список, я уже разобрался один раз в своем коде, но на этот раз я хочу использовать эту сортировку в своей следующей программе, но здесь она, похоже, не работает !! я отсекаю как свою предыдущую, так и недавнюю функцию сортировки !! в основном я хочу отсортировать запись по регистрационному номеру. !- вот мои вещи !!

Что я уже пробовал:

//Предыдущий
struct Node
{

	Node * next;
	int data;
};

void Sort::insert(Node * &ptr, int d)
	{
		Node *temp = new Node(); // middle Node
		temp->next = ptr;
		ptr = temp; // 
		ptr->data = d;
	}

void sortNodes(Node * ptr)
	{

		int temp = 0;
		Node * current;
		for (bool swap = true; swap; ) {
			swap = false;
			for (current = ptr; current->next != NULL; current = current->next)
			{
				if (current->data > current->next->data)
				{
					temp = current->data;
					current->data = current->next->data;
					current->next->data = temp;
					swap = true;
				}
			}
		}
	}


//New_RECENT
struct student
{
	//string name;
	int regno;
	//int age;
	//double GPA;
	//int pono;

	student() {}
	~student() {}
	struct student *next;
};
student *head = NULL;

void addRecord()
{
	cout << endl;
	cout << "Add record:" << endl;
	cout << endl;
	struct student *temp, *alt;
	temp = new student;
	cout << "What is the student's name: ";
	cin >> temp->name;
	cout << "What is the student's RegNo: ";
	cin >> temp->regno;
	cout << "What is the student's Age: ";
	cin >> temp->age;
	cout << "What is the student's PhonNo: ";
	cin >> temp->pono;
	cout << "What is student's GPA: ";
	cin >> temp->GPA;
	temp->next = NULL;
	if (head == NULL)
		head = temp;
	else
	{
		alt = head;
		while (alt->next != NULL)
		{
			alt = alt->next;
		}
		alt->next = temp;
	}
}


void sorting(void)
{
	student * temphead = head;
	student * tempnode = NULL;
	int count = 0;
	for (int i = 0; i<count; i++) {
		for (int j = 0; j<count - i; j++) {
			if (temphead->regno > temphead->next->regno) {
				tempnode = temphead;
				temphead = temphead->next;
				temphead->next = tempnode;
			}

			temphead = temphead->next;
			count++;
			
		}
	}
}


//главный
сортировка();

//ошибки не показывает ошибки или выход я тоже попробовал отладчик !!

NotPolitcallyCorrect

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

Afzaal Ahmad Zeeshan

Как, но как вы продолжаете "выводить" что-либо?

nv3

Я полностью согласен. Если бы ОП знал, как использовать отладчик, он бы не опубликовал этот вопрос, но нашел проблему.

Philippe Mori

И ответ очевиден: используйте отладчик, чтобы увидеть, где вы допустили ошибку. Начните с 2 или 3 пунктов в другом порядке.

mayashah

Решено !! :)

2 Ответов

Рейтинг:
1

KarstenK

Прочитать статью Как создать связанный список с помощью C/C++ Он также обрабатывает сортировку.

Проблема во всех алгоритмах сортировки заключается в том, что при сортировке позиция меняется, поэтому в какой-то момент вам нужно перезапустить порядок.

Я также рекомендую вам прочитать сортировка статьи в Википедии чтобы получить более глубокие знания о сортировке. Это поможет вам представить свою домашнюю работу с некоторыми причудливыми деталями.

Pro-tip: напишите некоторые тестовые данные в коде, чтобы проверить ваши функции сортировки.


Рейтинг:
0

Patrice T

Цитата:
я знаю, как работает отладчик
Ваш вопрос говорит нам о том, что вы не знаете, как работает отладчик.

Отладчик-это инструмент, и, как и для любого инструмента, вам нужно научиться им пользоваться.

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

Совет: возьмите лист бумаги и попробуйте выполнить алгоритм вручную, ваша программа должна использовать ту же процедуру.
На листе бумаги отмечайте все изменения в вашем списке после каждого шага сортировки. Это связанный список, только ссылки на head и next должны измениться.


mayashah

я ее разгадал !! созданный новый логический отладчик отстой !! слишком сложно для любителя

Patrice T

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