C, PHP, VB, .NET

Дневникът на Филип Петров


* Рекурсивни структури

Публикувано на 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();
	}

Задача: Реализирайте предишния пример с три структури.

 



Добави коментар

Адресът на електронната поща няма да се публикува


*