Cod sursa(job #1059763)

Utilizator vlad008Stan Vladut Angel vlad008 Data 16 decembrie 2013 22:16:27
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<cstdio>

using namespace std;
int n,x,ok=1;
struct nod
{
	int x,nr;
	nod *s,*d;
	nod(int k) {x=k; nr=0; s=d=NULL;};
} *p;
void insert(nod*& p, int k)
{
	if(p==NULL)
	{
		p = new nod(k);
	}
	else 
	{
		if(k <= p->x ) {insert(p->s,k); p->nr++; }
		  else insert(p->d,k);
	}
}
void srd(nod* p)
{
	if(p!=NULL)
	{
		srd(p->s);
		printf("%d ",p->x);
		srd(p->d);
	}
}
void search(nod* p, int k)
{
	if(p!=NULL)
	{
		if(p->nr == k) {printf("%d",p->x);ok=0;}
		else 
		{
			if(p->nr > k) search(p->s,k);
			  else search(p->d, k - p->nr -1);
		}
	}
}
int main()
{
	// inserarea elem
	printf("n="); scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		printf("Elem= "); scanf("%d",&x);
		insert(p,x);
	}
	// afisarea elem
	srd(p); printf("\n");
	// cautarea unui elem dupa index
	printf("Index de cautat= "); scanf("%d",&x);
	search(p,x);
	if(ok) printf("Nu Exista Acest Indice!");
	
	return 0;
}