Алгоритм проверки списка на наличие 2 одинаковых элементов

Описать процедуру, которая проверяет, есть ли в списке L хотя бы 2 одинаковых элемента.

Алгоритм и общая идея:
1.Устанавливаем "флаг" в положение "нет хотя бы двух одинаковых элементов" (ноль, т.е. ложь)

2. Надо сравнивать I-ый элемент со II-ым, III-им... и т.д. до конца списка.
Потом II-ой с третьим, четвертым... и так далее.

Создаем вложенный друг в друга цикл, в котором вложенный начинается на 1 больше, чем значение переменной первого.

Внутри этих циклов проверяем не равны ли элементы друг другу с номерами счетчиков 1 и 2 цикла.

Если условие выполняется, т.е. имеется хотя бы два однинаковых элемента в списке, то устанавливаем флажок в положение 1 (истина).

В конце выдаем результат согласно флагу. Вот и вся программа :)

Входные данные и описание:

  • L[SIZE] - собственно наш список заданный массивом размера SIZE.
  • next[SIZE] - массив, хранящий положение следующего элемента для каждого элемента списка L.

    #define SIZE 100
    int L[SIZE], next[SIZE];
     
    int does_equal()
    {
    int equal = 0; // флажок наличия в списке хотя бы двух одинаковых элементов. По- умолчанию установлен в "ложь"
     
    for (int i = 0; i < SIZE; i++)
    {
      for (int j = i+1; j < SIZE; j++)
      {
          if (L[i] == L[next[j]]) equal = 1;
      }
    }
     
    if (equal == 1) printf ("В списке есть одинаковые элементы!\n")
    else printf ("Одинаковые элементы в списке не найдены!\n");
     
    return equal;
    }

  • Ключевые слова: 
    одинаковые элементы, список
    ВложениеРазмер
    Proverka_spiska_odinakovie_elementi.zip484 байта