mayashah Ответов: 2

Программа перестала работать круговой связанный список


Я столкнулся с проблемой с моим круговым связанным списком, и когда я вызываю функцию кругового связанного списка, программа останавливается !! где я ошибаюсь !!!

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

struct node
{
	int data;
	struct node *next;
}*head,*last;

C_L()
	{
		last = NULL;
		head = NULL;
	}

int C_L::count()

{
		int c = 0;
		node *p;
		p = head;
		do
		{
			c++;
			p = p->next;
		} while (p != last->next);
		return c;
	}

void C_L::reverse()
{
	node *p, *q, *r;
	int l;
	l = count();
	int b, t, x = l / 2;
	p = head;
	while (x>0)
	{
		b = l;
		q = head;
		while (b>1)
		{
			q = q->next;
			b--;
		}
		t = q->data;
		q->data = p->data;
		p->data = t;
		p = p->next;
		l--;
		x--;
	}
	cout << "Linked List Reversed" << endl;
	display_list();
}


// ГЛАВНЫЙ
cl.reverse();

Kornfeld Eliyahu Peter

Попробуйте отладить! У вас может быть бесконечная петля...

mayashah

я серьезно не знаю, как отлаживать, я хочу только ошибку в этом случае !! не хочу отлаживать весь код целиком

Afzaal Ahmad Zeeshan

Останавливается, как?

2 Ответов

Рейтинг:
2

Patrice T

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

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

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


Рейтинг:
1

OriginalGriff

Как я уже говорил тебе в прошлый раз: Обратный круговой связанный список fucntion идет не так ! ![^]

Цитата:
Используйте отладчик. Это часть того, для чего он существует.
Поставьте точку останова в начале функции и шаг за шагом внимательно посмотрите на то, что происходит.
Что может помочь вам понять, так это то, что вы сначала нарисуете на бумаге, как выглядит список - установите простой список, скажем, с 4 узлами, - а затем отметьте его тем, как он должен выглядеть, когда вы закончите. Поскольку он изменяется во время выполнения кода в отладчике, отметьте свой чертеж, чтобы показать новое состояние. Если это должно быть достаточно очевидно, как только вы войдете в него, что происходит и почему все идет не так.