Задача: после игры в домино остался ряд камней. Используя двунаправленный список, определить, правильно ли расположены камни домино. Алгоритм решения: Примечание: значения на камнях генерируются случайным образом. #include <stdio.h> #include <stdlib.h> #define MAX 5 struct list { int leftVal; int rightVal; list *next; // ссылка на следующий элемент list *prev; // ссылка на предыдущий }; // Начальный элемент списка list *cur; // Формируем двунаправленный список void initgame () { int i; cur = new list; cur->prev = cur->next = NULL; for (i=0; i<MAX; i++) { list *tmp; tmp=new list; tmp->leftVal =rand() % 6; tmp->rightVal =rand() % 6; tmp->next=cur->next; tmp->prev=cur->prev; cur->next=tmp; cur->next->prev=cur; cur=tmp; cur->next->prev=cur; } return; } // Правильно ли расположены камни домино? int victory () { list *tmp; tmp = cur; while (tmp->prev != NULL) { if (tmp->leftVal != tmp->prev->rightVal) return 0; tmp=tmp->prev; } return 1; } int main () { initgame(); if (victory() == 1) printf("YES\n"); else printf("NO\n"); return 0; }
|
|||||||