У меня есть структура, которую я называю пассажирами, которые сортируются в алфавитном порядке, и I Скопируйте в связанный список с теми же элементами, что и структура. Что было бы лучшим алгоритмом для изменения порядка элементов списка, чтобы я мог легко распечатать его в алфавитном порядке? Теперь, конечно, моя печать не работает, если первое значение он встречает является NULLРекурсивный алгоритм для связанного списка в C
typedef struct
{
char fullname[40];
unsigned short phonenr[10];
unsigned int seatnr;
}PASSENGERS;
typedef struct list1
{
char fullname[40];
struct list1 *next;
}LIST1;
int main()
{
selectsortnm(passenger); /*A function I use to sort alphabetically*/
LIST1 *list1, *start=NULL;
int i=0;
while (strcmp(passenger[i].fullname,"\0")!=0);
{
list1 = (LIST1 *) malloc (sizeof(LIST1));
list1->next = NULL;
strcpy(list1->fullname,passenger[i].fullname);
if (start ==NULL)
{
start = list1;
i++;
}
else
{
list1->next = start;
start = list1;
i++;
}
}
//Recursive algorithm
LIST1 *current = list1;
while (current !=NULL)
{
printf("%s",current->fullname);
current = current->next;
}
}
Ваш вопрос непонятен. И что такое LIST1? Пожалуйста, используйте код, который легко понять. –
Нам нужен связанный -list.stackoverflow.com, поэтому мы можем отфильтровать половину входящих вопросов. –
Использование двунаправленного списка сделает трюк, пройдя его назад. Также (это больше похоже на обходной путь) вы можете пересечь массив 'пассажиров' назад при создании списка, но вам понадобится 2 цикла: 1 для получения последнего индекса (последняя запись, _fullname_ не' NULL'), а вторая : цикл из индекса, найденного предыдущим циклом, в _0_. Хм, но нет рекурсивности ни в двух подходах. – CristiFati