Для набора действительных чисел, представленных в виде списка, построить два списка: положительных и отрицательных чисел. Задание №3(ПРОСТЫЕ СПИСКИ) (см. "Сборник задач для начинающего программиста"). Алгоритм: -Создаём структуру "Titem",которая будет хранить число из введённого списка и указатель на следующее число. -Описываем функцию "add_item" добавляющую в список числа, вводимые с клавиатуры. -Описываем функцию "clear", очищающую память от структур типа "Titem". -Запускаем функцию "add_item" для чисел вводимых с клавиатуры. -Выводим на экран исходный список. -Добавляем отрицательные элементы в новый список, сравнивая все числа исходного списка с 0. -Добавляем положительные элементы в новый список, сравнивая все числа исходного списка с 0. -Выводим вновь полученные списки на экран. -Очищаем память от вышеперечисленных списков. #include<stdio.h> #include<conio.h> //библиотека с функцией GETCH struct Titem{ //Создаём структуру "Titem",которая будет хранить число из введённого списка и указатель на следующее число int n; Titem *next; } *start, *last, *p, *startp, *startm, *lastp, *lastm; int v; void add_item(int v){ Titem *p; //Описываем функцию "add_item" добавляющую в список числа, вводимые с клавиатуры. if (start == NULL){ start= new Titem; start->n=v; start->next=NULL; last=start; } else { p=new Titem; p->n=v; p->next=NULL; last->next=p; last=p; } return; } void clear (Titem *start){ //Описываем функцию "clear", очищающую память от структур типа "Titem" Titem *p,*p1; p=start; while (p!=NULL){ p1=p->next; delete p; p=p1; } return; } int main () { printf("Введите набор чисел (закончив ввод нажмите ctrl+z)\n"); start=NULL; last=NULL; startp=NULL; lastp=NULL; startm=NULL; lastm=NULL; Titem *p1, *p2; while (scanf("%d",&v)!= EOF){ //Запускаем функцию "add_item" для чисел вводимых с клавиатуры add_item(v); } //ctrl+z заканчивает ввод элементов p=start; while (p!=NULL){ printf ("%d ", p->n); //Выводим на экран исходный список p=p->next; } p=start; while(p!=NULL){ if (p->n <0){ //Добавляем отрицательные элементы в новый список, сравнивая все числа исходного списка с 0 if (startm == NULL){ startm= new Titem; startm->n=p->n; startm->next=NULL; lastm=startm; } else { p1=new Titem; p1->n=p->n; p1->next=NULL; lastm->next=p1; lastm=p1; } } else { //Добавляем положительные элементы в новый список, сравнивая все числа исходного списка с 0 if (startp == NULL){ startp= new Titem; startp->n=p->n; startp->next=NULL; lastp=startp; } else { p2=new Titem; p2->n=p->n; p2->next=NULL; lastp->next=p2; lastp=p2; } } p=p->next; } printf ("\n"); p=startm; //выводим на экран список с отрицательными числами while (p!=NULL){ printf ("%d ", p->n); p=p->next; } printf ("\n"); p=startp; //выводим на экран список с положительными числами while (p!=NULL){ printf ("%d ", p->n); p=p->next; } clear(start); clear(startm); clear(startp); getch(); //задерживает экран до нажатия любой клавиши return 0; }
Ключевые слова:
Списки, создание новых списков, сортировка списков
|
|||||||