Я пытаюсь изменить связанный список в c, который я создал, копируя данные из структуры.Обратный алгоритм для связанного списка в C
Я создал следующую функцию с именем reverselist
, прочитав много предложений об изменении списка, но после ее применения и повторной попытки печати я ничего не печатаю на своем экране.
Я не хочу просто печатать файл, но я хочу, чтобы связанный список был постоянно изменен. Может кто-то выяснить, в чем проблема в моем коде?
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int i,j,temp;
typedef struct{
int nr;
}PASSENGERS;
typedef struct list1{
int nr;
struct list1 *next;
}LIST1;
LIST1* reverselist (LIST1 *head)
{
LIST1 *cursor=NULL;
LIST1 *next;
while(head){
next=head->next;
head->next=cursor;
cursor=head;
head=next;
}
return cursor;
}
int main()
{
PASSENGERS passenger[53];
for (j=0;j<53;j++)
passenger[j].nr=j+1;
PASSENGERS *start=NULL;
char selection;
do{
printf("0. Exit and Print File\n");
scanf(" %c",&selection);
} while (selection!='0');
LIST1 *list1, *start=NULL;
for (i=0;i<53;i++){
list1 = (LIST1 *) malloc (sizeof(LIST1));
list1->next = NULL;
list1->nr = passenger[i].nr;
if (start ==NULL)
start = list1;
else //add new node at the beginning of list
{
list1->next = start;
start = list1;
}
}
LIST1 *current = list1;
printf("The original list is:");
while (current !=NULL) /* Printing the names on the list ok*/
{
printf("%d\n",current->nr);
current = current->next;
}
LIST1* head = NULL;
head=reverselist(head);
printf("The reversed list is:");
while (current !=NULL){
printf("%d\n",current->nr);
current = current->next;
}
}
Существует множество qu о том, как изменить позиции в односвязном списке. Вы уверены, что не можете найти ни одного из них. –
Ну, я нашел много способов, и я попытался применить некоторые из них. Тот, который выглядит ближе всего к решению, я думаю, это тот, который я разместил здесь, но все же не могу заставить его работать. Спасибо за и я все еще сосредоточен на чтении здесь и там, чтобы найти решение! ! – baskon1