Buscar

LSE - Exemplo 1: Lista não ordenada e com repetidos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Lista Linear Simplesmente Encadeada
Exemplo 1 – Lista não ordenada e com elementos repetidos
#include <stdio.h>
typedef struct no {
 int valor;
 struct no * prox;
} TNo;
void inserirInicio (TNo* *lista, int num){
 TNo * novo;
 novo = (TNo *) malloc (sizeof(TNo)); // alocar nó
 novo->valor = num;
 if (*lista == NULL) {
 novo->prox = NULL;
	 *lista = novo;
 }
 else {
 novo->prox = *lista;
 *lista = novo;
 }
 printf ("Insercao efetuada \n");
}
void inserirFinal (TNo* *lista, int num){
 TNo *novo, *aux;
 novo = (TNo *) malloc (sizeof(TNo)); // alocar nó
 novo->valor = num;
 novo->prox = NULL;
 if (*lista == NULL) {
 *lista = novo;
 }
 else {
	 aux = *lista;
	 while (aux->prox != NULL) {
		 aux = aux->prox;
	 }
 aux->prox = novo;
 }
 printf ("Insercao efetuada \n");
}
�
void listar (TNo * lista) {
 TNo * aux;
 if (lista == NULL) 
 printf ("Lista vazia \n");
 else {
 aux = lista;
 while (aux != NULL) {
 printf ("%i \n", aux->valor);
 aux = aux->prox;
 }
 }
}
void removerPrimeiro (TNo* *lista) {
 TNo * aux;
 if (*lista == NULL)
 printf ("Lista vazia \n");
 else {
 aux = *lista;
 *lista = (*lista)->prox;
 free (aux); // desalocar nó
 printf ("Remoção efetuada \n");
 }
}
void removerUltimo (TNo * *lista) {
 TNo *aux1, *aux2;
 if (*lista == NULL)
 printf ("Lista vazia \n");
 else if ((*lista)->prox == NULL){
 free (*lista); // desalocar nó
 (*lista) = NULL;
 }
 else {
 aux1 = *lista;
 aux2 = (*lista)->prox;
 while (aux2->prox != NULL) {
 aux1 = aux1->prox;
 aux2 = aux2->prox;
 }
 free (aux2); // desalocar nó
 aux1->prox = NULL;
 }
}
void removerTodos (TNo* *list) {
	TNo * aux;
	while (*list != NULL) {
		aux = *list;
		*list = (*list)->prox;
		free(aux);
	}
}
int main () {
 TNo * LSE = NULL;
 char op;
 int numero;
 do {
 printf ("1 - Inserir no inicio da lista \n");
	 printf ("2 - Inserir no final da lista \n");
 printf ("3 - Remover primeiro da lista \n");
 printf ("4 - Remover ultimo da lista \n");
 printf ("5 - Remover elemento procurado \n");
 printf ("6 - Exibir todos da lista \n");
 printf ("7 - Sair do programa \n");
 printf ("Informe a opcao: ");
 op = getchar (); fflush (stdin);
 switch (op) {
 case '1': printf ("Informe o valor: ");
 scanf ("%i", &numero); fflush (stdin);
 inserirInicio (&LSE,numero);
 break;
	 case '2': printf ("Informe o valor: ");
 scanf ("%i", &numero); fflush (stdin);
 inserirFinal (&LSE,numero);
 break;
 case '3': removerPrimeiro (&LSE); break;
 case '4': removerUltimo (&LSE); break;
 case '5': printf ("Informe o valor a remover: ");
 scanf ("%i", &numero); fflush (stdin);
 // remover (&LSE, numero); 
		 /* REMOVER LEVANDO EM CONSIDERAÇÃO QUE 
	 PODEM EXITIR VALORES REPETIDOS */
 break;
	 case '6': listar (LSE); break;
 case '7': // removerTodos (&LSE); break;
 default: printf ("Opcao invalida \n");
 }
 } while (op != '7');
 return 0;
}

Continue navegando

Outros materiais