当前位置: 首页>>代码示例>>C++>>正文


C++ Lista::primoLista方法代码示例

本文整理汇总了C++中Lista::primoLista方法的典型用法代码示例。如果您正苦于以下问题:C++ Lista::primoLista方法的具体用法?C++ Lista::primoLista怎么用?C++ Lista::primoLista使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Lista的用法示例。


在下文中一共展示了Lista::primoLista方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: private_riempiAlbero

/**
 * Riempie ricorsivamente un sotto-albero in base all'elemento
 * da inserire
 * [FUNZIONE_PRIVATA]
 */
void private_riempiAlbero(Lista lista, int lunghezzaLista, Albero &t, nodoBin nodoRiferimento) {
	
	tipoelem elemento;
	posizione p;
	nodoBin nuovoRiferimentoSx, nuovoRiferimentoDx;
	Lista listaSx, listaDx;
	int lSottolistaSx, lSottolistaDx;
	
	// 1: calcola il mediano e lo scrive nel nodo di riferimento
	p = mediano(lista,lista.primoLista(), lista.pos(lunghezzaLista));
	lista.leggiLista(elemento, p);
	t.scriviNodo(nodoRiferimento, elemento);
	// :1
	// 2: calcola la sottolista sinistra in base al mediano
	listaSx = creaSottoLista(lista, lista.primoLista(), p);
	lSottolistaSx = lunghezza(lista, lista.primoLista(), p);
	// 2.1: controlla che abbia senso avviare una ricorsione
	if ( lSottolistaSx > 0 ) {
		t.insFiglioSx(nodoRiferimento);
		nuovoRiferimentoSx = t.figlioSx(nodoRiferimento);
		// 2.1.1 Se la lista ha 1 solo elemento, allora è una foglia
		if ( lSottolistaSx == 1 ) {
			listaSx.leggiLista(elemento, listaSx.primoLista());
			t.scriviNodo(nuovoRiferimentoSx, elemento);
		// :2.1.1
		// 2.1.2 Se la lista ha piu di un elemento allora avvia la ricorsione
		} else {
			private_riempiAlbero(listaSx, lSottolistaSx, t, nuovoRiferimentoSx);
		}
		// :2.1.2
	}
	// :2.1
	// 3: calcola la sottolista destra analogamente a quella sinistra
	listaDx = creaSottoLista(lista, lista.succLista(p), salta(lista, lista.primoLista(), lunghezzaLista));
	lSottolistaDx = lunghezzaLista / 2;
	if ( lSottolistaDx > 0 ) {		
		t.insFiglioDx(nodoRiferimento);
		nuovoRiferimentoDx = t.figlioDx(nodoRiferimento);
		if ( lSottolistaDx == 1 ) {
			listaDx.leggiLista(elemento, listaDx.primoLista());
			t.scriviNodo(nuovoRiferimentoDx, elemento);
		} else {
			private_riempiAlbero(listaDx, lSottolistaDx, t, nuovoRiferimentoDx );
		}
	}
	// :3
	return;
}
开发者ID:ximarx,项目名称:asd,代码行数:53,代码来源:Controller.cpp

示例2: stampaLista

void stampaLista(Lista lista) {

	tipoelem letto;
	
	posizione p = lista.primoLista();
	while ( !lista.fineLista(p) ) {
		lista.leggiLista(letto, p);
		cout << letto << " ";	
		p = lista.succLista(p);
	}
	
}
开发者ID:ximarx,项目名称:asd,代码行数:12,代码来源:Controller.cpp

示例3: caricaAlberoBinario

/**
 * Albero caricaAlberoBinario(Lista l) – costruisce un albero binario di ricerca utilizzando gli
 * elementi presenti nella lista ordinata;
 * Algoritmo per caricare l'albero binario:
 * T = caricaAlberoBinario(partizione sinistra di L rispetto a mediano(L))
 * U = caricaAlberoBinario(partizione destra di L rispetto a mediano(L))
 * T' = costrBinAlbero(T,U) in cui la radice u di T' è mediano(L)
 */
Albero caricaAlberoBinario(Lista lista) {
	
	nodoBin radice = 0;
	int lunghezzaLista = 0;
	Albero albero = Albero();
	posizione ultimo = lista.primoLista();
	
	while ( !lista.fineLista(ultimo) ) {
		ultimo = lista.succLista(ultimo);
	}
	
	radice = 0;
	albero.insBinRadice(radice);
	
	lunghezzaLista = lunghezza(lista, lista.primoLista(), ultimo);
	
	private_riempiAlbero(lista, lunghezzaLista, albero, radice);
	
	return albero;
	
}
开发者ID:ximarx,项目名称:asd,代码行数:29,代码来源:Controller.cpp


注:本文中的Lista::primoLista方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。