Линейные однонаправленные списки: выяснить, имеются ли совпадающие элементы - C (СИ)
Формулировка задачи:
Всем привет помогите с задачей на языке си.
Aлгоритмов обработки динамических структур данных. Линейные однонаправленные списки
15. Даны действительные числа a1, ..., an. ( n >= 2 и заранее неизвестно). Выяснить, имеются ли среди чисел a1, ..., an совпадающие.
Как найти "Выяснить, имеются ли среди чисел a1, ..., an совпадающие."
Решение задачи: «Линейные однонаправленные списки: выяснить, имеются ли совпадающие элементы»
textual
Листинг программы
#include<stdlib.h> #include<stdio.h> #include<string.h> struct st {struct st *pc1; int c; struct st *pc; }; int main() { struct st *str; struct st *beg=NULL; struct st *end=NULL; struct st *end1=NULL; struct st *buf=NULL; int min,P=0; char pr[4]; printf("vvedite dannie structuri"); /*cikl vvoda i formirovanie spiska*/ do { str= new st;//(struct stud*)malloc(sizeof(struct stud)); printf("\n vvedi c="); scanf("%d",&str->c); /*vcluchit zveno v spisok*/ if(beg==NULL && end==NULL) {beg=str;str->pc1=NULL;buf=str;} else { end1=str;end->pc=str; end1->pc1=buf; } end=str; end->pc=NULL;buf=str; printf("\n vvesti sled. znachenie?"); scanf("%s",pr); if (strcmp(pr,"no")==0) break; }while(1); printf("\n soderjimoe spiska:"); str=beg;min=str->c; while(str!=NULL) { if(str->c<min){P=1;break;} str=str->pc; } printf("\n spisok\n "); if(P==0) {str=beg; while(str!=NULL) { printf(" %d ",str->c); str=str->pc; } } else {str=buf; while(str!=NULL) { printf(" %d ",str->c); str=str->pc1; } } free(str); system("PAUSE"); return 0; }
Объяснение кода листинга программы
В этом коде создается список структур с использованием динамического выделения памяти. Вводится строка, и затем в цикле до тех пор, пока не будет введено no
, добавляются элементы в список. Затем список проходит в обратном порядке, и если значение элемента меньше минимального значения списка, то меняется значение минимального значения и сдвигается на единицу счетчик. После прохода по всем элементам списка, если счетчик равен нулю, то выводится список элементов в порядке их добавления, иначе выводится в обратном порядке. Код также освобождает память, выделенную под список, и вызывает систему для приостановки выполнения программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д