Нахождение в двунаправленном списке двух равных рядом стоящих элементов

Пусть L обозначает кольцевой двунаправленный список с заглавным звеном. Описать функцию или процедуру, которая оп­ределяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним по кругу элементу. Задача № 14 "Двунаправленные списки" (см. "Сборник задач для начинающего программиста").

Алгоритм :
1) Создаем кольцевой двунаправленный список из k элементов с заглавным элементом
2) "Идем" по списку попарно сравнивая рядом стоящие элементы
3) Если есть одинаковые рядом стоящие элементы выводим "YES"

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
  struct TNode {                 //объявляем структуру данных
 
    int n;
 
    TNode *next;
    TNode *prev;
 
  }  *start , *last  ;
 
 
 void funkt1 (int m ) {      // функция построения двунапрвленного списка
 
   TNode *p;
 
   while (m!=0) {
 
     if (start==NULL) {      // создаём первый элемент
 
       start= new TNode;
       start->n=random(10);
       start->next=NULL;
       start->prev=NULL;
       last=start;
       printf(" %d ",start->n);
 
     }
 
     else {                       // строим остальные элементы
 
       p= new TNode;
       p->n=random(10);
       p->next=NULL;
       last->next=p;
       p->prev=last;
       last=p;
       printf(" %d ",p->n);
 
     }
 
      m--;
 
      if (m==0) {                   // замыкаем первый и последний элементы
       last->next=start;           // образуем "кольцо"
       start->prev=last;
 
      }
    }
 
 
  return  ;
 
 }
 
 void funkt2 () {                    // функция проверки равенства элементов
 
  TNode *f;
 
  f=start;
 
  while (f->next!=start) {
 
    if (f->n==(f->next)->n || f->n==(f->prev)->n ) {
     printf(" \n\n YES");
     break ;
    }
 
    else
     f=f->next;
    }
 
 return ;
 
}
 
 
int main() {
 
 int k;
 
 randomize ();
 
 clrscr ();
 
 printf ("vvedute kol-vo elementov : ");
 scanf ("%d",&k);
 
 funkt1 (k);
 funkt2();
 
 getch();
 
return 0 ;
 
}

Ключевые слова: 
исправлено (разделил на 2 функции)
ВложениеРазмер
14_ds.rar11.77 кб