Я пытаюсь отсортировать свою структуру на основе имен (в алфавитном порядке). Например, у меня есть такая структура:
struct person{
char name[MAX];
char num[MAX];
char email[MAX];
struct person *next;
struct person *previous;
};
struct person *next, *first, *end;
и в моей основной функции:
int main()
{
struct person p = {{0}}
.
.
.
switch(choice)
{
case 1 :
printf("Name : "); scanf("%s", &p.name);
printf("Num : "); scanf("%s", &p.num);
printf("E-Mail : "); scanf("%s", &p.email);
input(p); //function to input data
break;
case 2 :
sort(p); //function to sort the data
break;
}
}
И в моей функции-прототипе:
void sort(struct person p)
{
struct person *ptr, *ptr2, *temp;
ptr=first;
ptr2=first;
for (ptr= first; ptr!= NULL; ptr= ptr->next)
{
for (ptr2= ptr2->next; ptr2!= NULL; ptr2= ptr2->next)
{
if (strcmp(ptr->name, ptr2->name) > 0)
{
temp = ptr;
ptr= ptr2;
ptr2= temp;
}
}
}
}
Итак, у меня есть функция-прототип, которая сортирует структуру на основе ее элемента, которым является имя. Я пробовал сортировать его по тому же принципу, что и сортировка пузырем, но у меня это не сработало. Указатель ptr указывает на первый узел в списке, а ptr2 указывает на второй узел. Мой алгоритм неверен? Кажется, я не могу понять, что не так. Основная проблема с сортировкой. Надеюсь, мой вопрос понятен.
struct person p
; скорее всего, это будетstruct person **p
илиstruct person &*p
. - person Jonathan Leffler   schedule 18.11.2013