* Рекурсивни структури
Публикувано на 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();
}
Задача: Реализирайте предишния пример с три структури.
Добави коментар