Lista Encadeada Dev++
//Operaçoes com Lista encadeada
#include
#include
#include
// lista encadeada de forma estática (pouco usado); struct elemento{ int valor; elemento *proximo, *anterior;
};
void criar(elemento *e,int valor){ e->valor=valor; e->proximo=NULL; e->anterior=NULL;
}
void girarDireita(elemento *e,int vezes){ elemento *nav = e; for(int i=0;i < vezes;i++){ if(nav->valor==-1)nav=nav->proximo;//ignora cabeca printf("%d -> ",nav->valor); nav=nav->proximo; }
}
void girarEsquerda(elemento *e,int vezes){ elemento *nav = e; for(int i=0;i < vezes;i++){ if(nav->valor==-1)nav=nav->anterior;//ignora cabeca printf("%d -> ",nav->valor); nav=nav->anterior; }
}
void inserir(elemento *lista){//(recebe valor qualquer) elemento *novo = new elemento; criar(novo,0); printf("digite o valor do novo elemento: "); scanf("%d",&novo->valor); //encontrar o lugar de inserir o novo elemento *nav= lista; while(nav->proximo!=NULL){ nav=nav->proximo; } nav->proximo = novo; novo->anterior = nav; novo->proximo=lista;//fazendo a cercularidade lista->anterior=novo;
//excluindo qualquer elemento void excluir(elemento *lista,int valor){ elemento *nav= lista->proximo; while(nav!=NULL && nav->valor!=valor){ nav=nav->proximo; } if(nav!=NULL){ if(nav->proximo!=NULL){//no meio nav->anterior->proximo=nav->proximo; nav->proximo->anterior=nav->anterior; delete nav; } } else{ printf("\n%d nao existe na lista...",valor); } } int main(void){ int opcao=0; elemento lista1; criar(&lista1,-1); while(opcao!=6){ printf("\nescolha uma opcao: \n" "1 - inserir\n" "2 - Exluir elemento\n" "3 - Girar para direita\n" "4 - Girar para esquerda\n" "6 - sair\n\n");