Escolar Documentos
Profissional Documentos
Cultura Documentos
{
Corrente = (no*)malloc(syzeof(no));
enterdata();
Achou = 0;
Axuliar = inicio;
If (inicio == null)
{
Inicio = corente;
Auxiliar = corente;
Corente -> = null;
prinft ("inserido o primeiro item na lista...\n");
system("passe");
achou = 1;
} else{
if (corrente -> codigo < auxiliar -> codigo)
{
corrente -> next = auxiliar;
Inicio = corrente;
Achou = 1;
printf("elemento precede o primeiro da lista...\n")
system("pause");
}else{
Auxiliar = auxiliar -> next;
while(auxiliar 2 != null)
{
if (corrente -> > auxiliar -> && corrente -> < auxiliar -> codigo)
{
auxiliar ->next = corrente;
Corrente -> next = auxiliar;
Achou = 1;
printf("elememento inserido no meio da lista... \n");
system("pause");
Break;
}else{
Auxiliar = auxiliar -> next;
Auxiliar2 = auxiliar2-> next;
}
}
if( achou == 0 && corrente-> codigo > auxiliar -> codigo)
{
Auxiliar -> next = corrente;
Corrente -> next = null;
Prinft (“elementos inseridos no final da lista);
system(“pause”);
}
A lista duplamente encadeada é a base para as demais estruturas que veremos a frente.
Quando a sua estrutura possui pouca diferença em relação a lista simplesmente conforme
exemplo abaixo:
Typedef struct no
{
Int codigo;
Char nome[10];
Struct no *next, *back;
}no;
Este novo campo permite fazer o duplo encadeamento conforme exemplo abaixo:
A C
(30)(120)
[||] [||]
#include <stdio.h>
#include <stdlib.h>
int main()
{
struct Tpreg{
char nome[25];
char nomeE[25];
void *back, *next;
};
void inserir(){
char nomeE[25];
Auxiliar = (registro*) malloc(sizeof(registro));
scanf("%s", Auxiliar->nomeE);
Auxiliar->next=NULL;
Auxiliar->back=NULL;
if(Atual==NULL){
Atual = Auxiliar;
}else{
Anterior = Atual->back;
while(Atual != NULL){
if(strcmp(nomeE, Atual->nome)>0 && strcmp(nomeE,
Anterior->nome)<0){
Anterior->next=Auxiliar;
Auxiliar->back=Anterior;
Atual->back=Auxiliar;
Auxiliar->next=Atual;
}else if(strcmp(nomeE, Anterior->nome)>0){
Atual = Anterior;
Anterior = Atual->back;
}else{
Atual = Atual->next;
Anterior=Atual->back;
}
}
}
}