Пусть L обозначает кольцевой двунаправленный список с заглавным звеном. Описать функцию или процедуру, которая определяет, есть ли в списке L хотя бы один элемент, который равен следующему за ним по кругу элементу. Задача № 14 "Двунаправленные списки" (см. "Сборник задач по графам"). Алгоритм: 1) Создаем замкнутый двунаправленный список #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 ; }
Ключевые слова:
двунаправленный список, поиск элементов в списке
|
|||||||