Программа, которая сортитует список из целых чисел. Числа вводятся с терминала, результат выводится на терминал. - C (СИ)
Формулировка задачи:
Здравствуйте! В программе нужно отсортировать список. Я пыталась, не разрывая связей между элементами списка, менять только информационную часть. Методом пузырьков. Но отсортировать не получается. Если не сложно, подскажите пожалуйста, где может быть ошибка.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct sp
{
int a;
sp *next;
};
void add_record(sp **start, sp **last, int n)
{
int i;
sp *nov;
for (i=1; i<=n; i++)
{
nov=(sp*)malloc(sizeof(sp));
nov->next=NULL;
printf("\nput an element ");
scanf("%d", &(nov->a));
if ((*last)==NULL)
{
(*start)=nov;
(*last)=nov;
}
else
{
(*last)->next=nov;
(*last)=nov;
}
}
}
void read_list(sp *start)
{
while (start!=NULL)
{
printf("%d ",start->a);
start=start->next;
}
}
void delete_list(sp **start)
{
sp *pr;
pr=NULL;
while (*start!=NULL)
{
pr=(*start);
(*start)=(*start)->next;
free(pr);
}
}
void main()
{
clrscr();
sp *start, *last, *pr, *cur;
int n, b, i, j;
start=NULL; last=NULL;
printf("\nPut a number of elements ");
scanf("%d",&n);
add_record(&start,&last,n);
pr=NULL;
cur=start;
for (i=1; i<=n; i++)
{
for (j=n; j<i; j--)
{
pr=cur;
cur=cur->next;
if ((cur->a)>(pr->a))
{
b=cur->a;
cur->a=pr->a;
pr->a=b;
}
}
cur=start;
}
read_list(start);
delete_list(&start);
}Решение задачи: «Программа, которая сортитует список из целых чисел. Числа вводятся с терминала, результат выводится на терминал.»
textual
Листинг программы
for (j=n; j>i; j--)