Я работал над кодом для обращения к связанному списку, но мне кажется, что только первый элемент распечатывается в моем списке. Вот моя функция:
void reverseSqueue(Squeue squeue) {
if (squeue -> first == NULL || squeue -> last == NULL){
return;
}
Node* temp = NULL;
Node* curr = squeue -> first;
squeue -> first = squeue -> last;
squeue -> last = curr;
/*if (squeue -> first != squeue -> last){
curr = curr -> next;
}
printf("%s\n", curr -> next -> value);
printf("%s\n", curr -> value);
printf("%s\n", curr -> prev -> value);
printf("______________\n");
printf("%s\n", squeue -> first -> value);
Node* nde = squeue -> first;
while (nde != NULL){
printf("%s\n", nde -> value);
nde = nde -> prev;
}*/
while (curr != NULL){
/*if (curr != squeue -> first || curr != squeue -> last){
if (curr -> next == squeue -> last){
curr = NULL;
}else{*/
temp = curr;
curr -> next = curr;
curr = temp;
curr = curr -> prev;
//}
//}else{
//curr = NULL;
//}
}
}
Я извиняюсь за грязный код, я попытался запустить несколько тестов и прокомментировал их здесь; До этого у меня был код, который работал нормально, но в OClint выдавалось предупреждение о значении мусора, поэтому я попытался их исправить, и теперь мой код, похоже, больше не работает. Если ничего не работает, я могу просто go вернуться к исходному коду. Любой вклад очень ценится!
struct node {
char *value;
struct node *next;
struct node *prev;
};
typedef struct node Node;
struct squeue {
struct node* first;
struct node* last;
};
typedef struct squeue * Squeue;