Member 13404013 Ответов: 1

Как найти n-й элемент связанного списка?


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

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

Вот код, который я пробовал:

int get_element(struct node **head, int index);


typedef struct node
	{
		int data;
		struct node* next;
	}node;

node* head = NULL;


int main(void)
{   
	int data_point;
	
	printf("what node would you like to find?\n");
	scanf("%d", &index);
	
	data_point = get_element(&head, index);
	
	printf("the value at node %d is %d", index, data_point);
	
	return (0);
}


int get_element(struct node **head, int index)
{
	node* current = *head;
	int count = 0;
	int data_point;
	
	while(current != NULL);
	{
		if(count == index)
		{
			data_point = current->data;
			
		}
		else
		{
			current = current->next;
			count++;
		}
	}
	return(data_point);
}

Peter_in_2780

Вы создали список для вашего поиска? Я этого не понимаю.

[no name]

Где находится add_element ()? Кстати: отладчик должен был сказать вам ответ на ваш вопрос.

PIEBALDconsult

Возможно, вы захотите вырваться из своего цикла while, когда найдете нужный узел?

«_Superman_»

Вы должны обновить свой вопрос, а не повторять его.

1 Ответов

Рейтинг:
2

Patrice T

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

Существует инструмент, который позволяет вам видеть, что делает ваш код, его имя отладчик Это также отличный инструмент обучения, потому что он показывает вам реальность, и вы можете увидеть, какие ожидания соответствуют реальности.
Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик-Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010-YouTube[^]
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.