Линейные однонаправленные списки: выяснить, имеются ли совпадающие элементы - 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, добавляются элементы в список. Затем список проходит в обратном порядке, и если значение элемента меньше минимального значения списка, то меняется значение минимального значения и сдвигается на единицу счетчик. После прохода по всем элементам списка, если счетчик равен нулю, то выводится список элементов в порядке их добавления, иначе выводится в обратном порядке. Код также освобождает память, выделенную под список, и вызывает систему для приостановки выполнения программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы