Funções Lista Encadeada - CORRIGIDO
694 palavras
3 páginas
#include <stdio.h>#include <stdlib.h>
#include <conio.h>
struct nodo{ int info; struct nodo *prox;
}elemento;
struct nodo *inicio; char resp; int valor;
// Procedimento para inserção no inicio da lista void insere(int dado)
{
struct nodo *pnovo; pnovo=(struct nodo*)malloc(sizeof(elemento)); pnovo->info=dado; pnovo->prox=NULL; if(inicio == NULL){ inicio = pnovo; } else{ pnovo->prox=inicio; inicio=pnovo; }
}
// Procedimento para inserção no fim da lista void insereFim(int dado)
{
struct nodo *pnovo;
pnovo=(struct nodo*)malloc(sizeof(elemento)); pnovo->info=dado; pnovo->prox=NULL;
struct nodo *atual = inicio; if(inicio == NULL){ inicio = pnovo; } else{ while(atual->prox != NULL){ atual = atual->prox; } atual->prox = pnovo; }
}
//Procedimento que retorna o tamanho da lista int tamanhoLista()
{
struct nodo *primeiro = inicio; int res=0; while(primeiro != NULL){ res++; primeiro=primeiro->prox; } return res;
}
// Procedimento para consultar um valor na lista int consulta(int valor)
{
int resp = 0; struct nodo *atual = inicio; while(atual != NULL){ if(atual->info == valor){ resp = 1; } atual = atual->prox; } return resp;
}
// Procedimento para inserção no meio da lista void insereMeio(int dado, int pos)
{
struct nodo *pnovo; struct nodo *atual = inicio; struct nodo *ant = inicio; int i=0; pnovo=(struct nodo*)malloc(sizeof(elemento)); pnovo->info=dado; pnovo->prox=NULL;
int tamanho = tamanhoLista(); if(tamanho == 0){ inicio = pnovo; } else{ if(pos <= 1){ //insere no inicio insere(valor); } else{ if(pos >= tamanho){ insereFim(valor); } else{ //posicao válida for(i=1;i<pos;i++){ ant = atual; atual = atual->prox; } ant->prox = pnovo;