Поиск одинаковых элементов в двунаправленном списке

Пусть L обозначает кольцевой двунаправленный список с заглавным звеном. Описать функцию или процедуру, которая определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним по кругу элементу.

Задача № 14 "Двунаправленные списки" (см. "Сборник задач по графам").

Алгоритм:

1) Создаем замкнутый двунаправленный список
2) Запрашиваем у пользователя элементы
3) Сравниваем полученые элементы
4) Если найдены элементы,удовлетворяющие условию,выводим "совпадение найдено"

#include <stdio.h>
#include <stdlib.h>
 
  struct List {                 //Создаем структуру данных
 
    int n;
 
    List *next;
    List *prev;
 
  }  *start , *last , *x ;
 
 void addList (int a ) {       //Создаем список
 
   List *c;
 
     if (start==NULL) {      
       start= new List;
       start->n=a;
       start->next=NULL;
       start->prev=NULL;
       last=start;
     }
 
     else {                    
       c= new List;
       c->n=a;
       c->next=NULL;
       last->next=c;
       c->prev=last;
       last=c;
     } 
 
       last->next=start;          
       start->prev=last;
 
  return;
 }
 
 void Search() {
 
     List*x;
 
     x = start;
 
     while (x->next!=start) {
       if (x->n==(x->next)->n || x->n==(x->prev)->n ) {
        printf("Sovpadenie naideno");
        break ;
       }
       else
        x=x->next;
    }
 
  return;
 }
 
int main() {
 
  int y;
 
    printf("Vvedite elementy.Po okon4aniu nagmite 'ctrl+z':\n");      //Запрос элементов списка 
                                                                     //у пользователя
    while (scanf("%d", &y)!=EOF){
            addList(y);
    }
 
  Search();
 
return 0 ;
}

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