![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Nikgamer |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 9 Регистрация: 22.4.2010 Город: Novosibirsk ![]() |
Привет. Вот дали на мою голову такую задачку, с условием, что реализую на СИ (без ++-ов). Задача формулируется так. На вход подается произвольное кол-во натуральных чисел (не по порядку, с повторами etc.). Нужно, используя односвязный список, отсортировать эти числа по возрастанию, удалить повторы и распечатать, собственно, получившийся список.
Ну-с, проблемы с реализацией. Ниже будет приаттачен мой индусский быдлокод. Вопросов 2. Первый - правильно ли сортируется? Второй - как реализовать печать? Код #include <stdio.h> #include <stdlib.h> int main () { int a; struct list {int data; struct list *next;}; struct list *h, *t, *p,*r,*c=NULL,*d; h=(struct list*)malloc(sizeof(struct list)); h->data=0; h->next=NULL; while (scanf("%d", &a)==1){ p=(struct list*)malloc(sizeof(struct list)); p->data=a; p->next=NULL; if(h->data==0){ h->data=p->data; continue; } if(p->data<h->data){ p->next=h; h=p; } if(p->data>h->data){ for(t=h;t->next!=NULL;t=t->next){ if(p->data<t->next->data){ c=t->next; t->next=p; p->next=c; } } t->next=p; } } return 0; } |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.5.2025, 22:33 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru