* Рекурсивни структури
Публикувано на 24 октомври 2008 в раздел С/С++.
Дефинирането на указател като част от структура е напълно валидна конструкция. Освен това е напълно възможно и дефинирането на указател към структура във структура. По този начин е възможно създаването на т.нар. "рекурсивни структури":
struct rec{ int k; struct rec *nextrec; };
Лесно можете да направите аналогия с рекурсивните функции. Използвайки подобни структури можем лесно да създаваме добре познати структури от данни като линейни списъци и бинарни дървета например.
Пример: Дефинира две структури и ги групира в сортиран линеен списък:
#include "stdafx.h" #include "stdio.h" struct list{ int k; struct list *next; } el1, el2, *p; void sort(){ if (el1.k < el2.k){ el1.next = &el2; el2.next = 0; p = &el1; } else{ el2.next = &el1; el1.next = 0; p = &el2; } } void show(){ while (p != 0){ printf("%d ", p->k); p = p->next; } printf("\n"); } void main() { printf("Please enter el1.k and el2.k: "); scanf("%d%d", &el1.k, &el2.k); sort(); show(); }
Задача: Реализирайте предишния пример с три структури.
Добави коментар