Professional Documents
Culture Documents
Rego
Pesquisando um determinado elemento, retornando sua posio /* Proposito: Pesquisar um determinado elemento, retornando sua posicao */ int busca ( tlista lst, int dado) { int posicaoRetorno; for (posicaoRetorno = 1; posicaoRetorno <= lst.posAtual; posicaoRetorno++) if ( lst.elemento[posicaoRetorno-1] == dado) return(posicaoRetorno); return(0); } Insero de um elemento em uma determinada posio /* Proposito: Insercao de um elemento em uma determinada posicao Requer o deslocamento `a direita dos elementos v(i+1)...v(n) Retorno: 0 : se a posicao for invalida ou se a lista estiver cheia 1 : se a operacao for bem sucedida Obs: Debater sobre o teste do tamanho */ int inserir ( tlista *lst, int posicao, int dado) { int i; if ( (cheia(*lst)) || (posicao > tamanho(*lst)+1 ) || posicao < 1) return (0); else { // deslocando a direita for (i = lst->posAtual; i>=posicao; i--) lst->elemento[i] = lst->elemento[i-1]; lst->elemento[posicao-1] = dado; (lst->posAtual)++; return(1); } } Remoo do elemento armazenando em uma determinada posio /* Proposito: Remocao do elemento de uma determinada posicao. Requer o deslocamento `a esquerda dos elementos v(i+1)...v(n) Retorno: 0 : se a posicao for invalida 1 : se a operacao for bem sucedida Obs: Deveria ser feito o teste da lista vazia */ int remover ( tlista *lst, int posicao, int *dado) { int i; if ( posicao > tamanho(*lst) || posicao < 1) return (0); else { *dado = lst->elemento[posicao-1]; // deslocando a esquerda for (i = posicao; i<= (lst->posAtual)-1; i++) lst->elemento[i-1] = lst->elemento[i]; (lst->posAtual)--; return(1); } }
Imprimindo o contedo da lista /* Proposito: Imprimir o contedo atual de uma lista sequencial */ void imprime ( tlista lst ) { if ( !vazia(lst) ) { int i; for (i=0; i< lst.posAtual; i++ ) printf(%d , lst.elemento[i] ); printf(\n); } }