Я наверное уже достал всех со своими тупыми задачами...Ламер проклятый........
Тема: Динамические конструиуемые типы данных.
Реализовать упорядоченный циклический список, тип данных - целые числа.
Прикладная задача:
исходный список заполняется из входного потока, затем программа меняет порядок элементов списка на обратный....
Вот че получилось:
Код:
#include <stdio.h>
#include <conio.h>
struct LINK
{
int data;
LINK *next;
};
typedef LINK *spisok;
spisok IniList(spisok pt_lst)
{
pt_lst = NULL;
return pt_lst;
}
spisok AddList(spisok pt_lst, int new_el)
{
if(pt_lst==NULL)
{
pt_lst=new LINK;
pt_lst->data=new_el;
pt_lst->next=pt_lst;
}
else
{
spisok pt_new=new LINK;
pt_new->data = new_el;
pt_new->next=pt_lst->next;
pt_lst->next=pt_new;
pt_lst=pt_new;
}
return pt_lst;
}
void WriteList(spisok pt_lst)
{
spisok i=pt_lst;
do
{
printf(" %d",pt_lst->data);
pt_lst = pt_lst->next;
}while(i!=pt_lst);
}
//................................................................................
...............
spisok PerList(spisok pt_lst, int el)
{
spisok i=pt_lst;
spisok lst2=IniList(lst2);
do{
for(int i1=0;i1<el;i1++)
pt_lst=pt_lst->next;
lst2=AddList(lst2,pt_lst->data);
}while(i!=pt_lst);
return lst2;
}
//................................................................................
.................
int main(void)
{
spisok lst;
int el,col=0;
clrscr();
printf("n Введите элементы списка:n");
lst = IniList(lst);
do
{
scanf("%d", &el);
col++;
lst = AddList(lst, el);
}while(el!=0);
printf("n Вот список:n");
WriteList(lst->next);
lst=PerList(lst->next, col-1);
printf("n Теперь список такой:n");
WriteList(lst->next);
getch();
return 0;
}
Функция PerList меняет порядок списка на обратный, но помойму я написал её коряво

(как обычно)....
и еще.. как мне написать ф-ию, которая при вводе элементов списка сразу их упорядочивает???