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;

Relacionados