Добрый день, ребята, я новый здесь, чтобы C, и пытаюсь изучить связанные списки. Я пытался обменять 2 узла из связанного списка, но до сих пор не удалось заставить его работать. Код, который я пытался использовать, вызывает бесконечный циклический цикл, но я не думаю, что это из-за инструкции if или while.Обмен 2 узлами в связанном списке
Посмотрите? Какие-нибудь указатели здесь? Помощь будет принята с благодарностью.
В основном, код использует пользовательский ввод для поиска узла на основе данных внутри, затем он должен обменивать узел данными с последующим узлом. Было ли это в течение 3 часов, может ли кто-нибудь помочь? Благодаря!
/проводник имя им с помощью указателя для текущего узла/
#include <stdio.h>
#include <stdlib.h>
struct node {
int x;
struct node *next;
struct node *prev;
};
struct node *root;
struct node *conductor;
struct node *counter;
struct node *newnode;
struct node *back;
struct node *swapper;
struct node *swappee;
struct node *blanker;
int add = 0;
int initialization = 0;
int query = 0;
int swap()
{
printf("enter data to search from within the nodes: ");
fflush(stdin);
scanf("%d", &query);
conductor = root;
while (conductor->next != 0)
{
if(conductor->x == query)
{
printf("\n%d\n", query);
swapper = conductor;
swappee = conductor->prev;
conductor = swappee;
conductor->next = swapper;
break;
}
else
{
conductor = conductor->next;
}
}
mainMenu();
}
Пожалуйста, отформатируйте свой код лучше, спасибо. – m0skit0
внутри тела блока 'else', попробуйте напечатать' conductor-> x', и если вы все еще не нашли проблему, чем опубликовать вывод из этого. Это поможет вам (и нам) понять, что происходит. –
замените элемент x на узел. – BLUEPIXY