Lista encadeada

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (653 palavras )
  • Download(s) : 0
  • Publicado : 7 de abril de 2013
Ler documento completo
Amostra do texto
#include
#include

typedef struct no{
int info;
struct no *next;
}No, *Nodeptr;

void imprimir_No(No);
int inserirNo(No *, int);
void inicializar_lista(No **);
voidinserir_lista(No **, int);
void desalocar_lista(No **);
void imprimir_lista(No *);
int deleteNode(No *,int);
void freememory(No *);
void OrdenacaoBubble(No *);
void Troca(int *,int *);
void separa (No *, int);

void inicializar_lista(Nodeptr *p)
{
*p= NULL;
}

int inserirNo(Nodeptr *header, int x)
{
Nodeptr newNo, prevNo, currentNo;
newNo = (Nodeptr)malloc(sizeof(No)); //tenta alocar memoria
if (newNo == NULL)
return 0; // nao conseguiu alocar
newNo->info = x;
newNo->next = NULL;

prevNo = NULL;// ponteiros auxiliares
currentNo = *header; // ponteiros auxiliares

if(currentNo == NULL) // insercao do primeiro elemento*header = newNo;
else
{
while(currentNo!=NULL) // posiciona currentNo adequadamente
{
prevNo = currentNo;
currentNo =currentNo-> next;
}
if (prevNo == NULL) // insercao antes do primeiro
{
newNo->next = *header;
*header = newNo;
}else // insercao no meio
{
prevNo->next=newNo;
newNo->next = currentNo;
}
}
return 1;
}

intdeleteNode(Nodeptr *header, int x)
{
Nodeptr prevNo, currentNo, temp;
if(*header!=NULL)
{
if(x ==(*header)->info) // remocao do primeiro
{temp = *header;
*header=(*header)->next;
free(temp);
}
else
{
prevNo = *header;
currentNo = (*header)->next;...
tracking img