Buscar

Algortimo de Lista Duplamente Encadeada(Inserção, remoção, busca,lista vazia)

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

ListaDuplamenteEncadeada/deployment.pri
# This file was generated by an application wizard of Qt Creator.
# The code below handles deployment to Android and Maemo, aswell as copying
# of the application data to shadow build directories on desktop.
# It is recommended not to modify this file, since newer versions of Qt Creator
# may offer an updated version of it.
defineTest(qtcAddDeployment) {
for(deploymentfolder, DEPLOYMENTFOLDERS) {
 item = item$${deploymentfolder}
 greaterThan(QT_MAJOR_VERSION, 4) {
 itemsources = $${item}.files
 } else {
 itemsources = $${item}.sources
 }
 $$itemsources = $$eval($${deploymentfolder}.source)
 itempath = $${item}.path
 $$itempath= $$eval($${deploymentfolder}.target)
 export($$itemsources)
 export($$itempath)
 DEPLOYMENT += $$item
}
MAINPROFILEPWD = $$PWD
android-no-sdk {
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 item = item$${deploymentfolder}
 itemfiles = $${item}.files
 $$itemfiles = $$eval($${deploymentfolder}.source)
 itempath = $${item}.path
 $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target)
 export($$itemfiles)
 export($$itempath)
 INSTALLS += $$item
 }
 target.path = /data/user/qt
 export(target.path)
 INSTALLS += target
} else:android {
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 item = item$${deploymentfolder}
 itemfiles = $${item}.files
 $$itemfiles = $$eval($${deploymentfolder}.source)
 itempath = $${item}.path
 $$itempath = /assets/$$eval($${deploymentfolder}.target)
 export($$itemfiles)
 export($$itempath)
 INSTALLS += $$item
 }
 x86 {
 target.path = /libs/x86
 } else: armeabi-v7a {
 target.path = /libs/armeabi-v7a
 } else {
 target.path = /libs/armeabi
 }
 export(target.path)
 INSTALLS += target
} else:win32 {
 copyCommand =
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
 source = $$replace(source, /, \\)
 sourcePathSegments = $$split(source, \\)
 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments)
 target = $$replace(target, /, \\)
 target ~= s,\\\\\\.?\\\\,\\,
 !isEqual(source,$$target) {
 !isEmpty(copyCommand):copyCommand += &&
 isEqual(QMAKE_DIR_SEP, \\) {
 copyCommand += $(COPY_DIR) \"$$source\" \"$$target\"
 } else {
 source = $$replace(source, \\\\, /)
 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
 target = $$replace(target, \\\\, /)
 copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\"
 }
 }
 }
 !isEmpty(copyCommand) {
 copyCommand = @echo Copying application data... && $$copyCommand
 copydeploymentfolders.commands = $$copyCommand
 first.depends = $(first) copydeploymentfolders
 export(first.depends)
 export(copydeploymentfolders.commands)
 QMAKE_EXTRA_TARGETS += first copydeploymentfolders
 }
} else:ios {
 copyCommand =
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
 source = $$replace(source, \\\\, /)
 target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target)
 target = $$replace(target, \\\\, /)
 sourcePathSegments = $$split(source, /)
 targetFullPath = $$target/$$last(sourcePathSegments)
 targetFullPath ~= s,/\\.?/,/,
 !isEqual(source,$$targetFullPath) {
 !isEmpty(copyCommand):copyCommand += &&
 copyCommand += mkdir -p \"$$target\"
 copyCommand += && cp -r \"$$source\" \"$$target\"
 }
 }
 !isEmpty(copyCommand) {
 copyCommand = echo Copying application data... && $$copyCommand
 !isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";"
 QMAKE_POST_LINK += "$$copyCommand"
 export(QMAKE_POST_LINK)
 }
} else:unix {
 maemo5 {
 desktopfile.files = $${TARGET}.desktop
 desktopfile.path = /usr/share/applications/hildon
 icon.files = $${TARGET}64.png
 icon.path = /usr/share/icons/hicolor/64x64/apps
 } else:!isEmpty(MEEGO_VERSION_MAJOR) {
 desktopfile.files = $${TARGET}_harmattan.desktop
 desktopfile.path = /usr/share/applications
 icon.files = $${TARGET}80.png
 icon.path = /usr/share/icons/hicolor/80x80/apps
 } else { # Assumed to be a Desktop Unix
 copyCommand =
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source)
 source = $$replace(source, \\\\, /)
 macx {
 target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target)
 } else {
 target = $$OUT_PWD/$$eval($${deploymentfolder}.target)
 }
 target = $$replace(target, \\\\, /)
 sourcePathSegments = $$split(source, /)
 targetFullPath = $$target/$$last(sourcePathSegments)
 targetFullPath ~= s,/\\.?/,/,
 !isEqual(source,$$targetFullPath) {
 !isEmpty(copyCommand):copyCommand += &&
 copyCommand += $(MKDIR) \"$$target\"
 copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\"
 }
 }
 !isEmpty(copyCommand) {
 copyCommand = @echo Copying application data... && $$copyCommand
 copydeploymentfolders.commands = $$copyCommand
 first.depends = $(first) copydeploymentfolders
 export(first.depends)
 export(copydeploymentfolders.commands)
 QMAKE_EXTRA_TARGETS += first copydeploymentfolders
 }
 }
 !isEmpty(target.path) {
 installPrefix = $${target.path}
 } else {
 installPrefix = /opt/$${TARGET}
 }
 for(deploymentfolder, DEPLOYMENTFOLDERS) {
 item = item$${deploymentfolder}
 itemfiles = $${item}.files
 $$itemfiles = $$eval($${deploymentfolder}.source)
 itempath = $${item}.path
 $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target)
 export($$itemfiles)
 export($$itempath)
 INSTALLS += $$item
 }
 !isEmpty(desktopfile.path) {
 export(icon.files)
 export(icon.path)
 export(desktopfile.files)
 export(desktopfile.path)
 INSTALLS += icon desktopfile
 }
 isEmpty(target.path) {
 target.path = $${installPrefix}/bin
 export(target.path)
 }
 INSTALLS += target
}
export (ICON)
export (INSTALLS)
export (DEPLOYMENT)
export (LIBS)
export (QMAKE_EXTRA_TARGETS)
}
ListaDuplamenteEncadeada/funcoes.h
//--------------------------------------------------------------------------------------------------
//adicionar no inicio da lista
void addinicio(struct no **lista, int valor){
 struct no *p; //auxiliar
 printf("\nValor do Elemento: ");
 scanf("%d",&valor);
 if((p = malloc(sizeof(struct no))) == NULL){//erro
 printf("\nMemory Failure");
 }else{
 p->info = valor; //recebendo valor
 p->esquerda = NULL; //esquerda é nulo pois a inseção é no inicio
 p->direita = *lista; //direita recebe a lista
 if(*lista != NULL){//se a lista não for nula então a esquerda recebe o valor
 (*lista)->esquerda = p;
 } //não pode ter um else, pois se não for nulo, ou insere na esquerda, ou a lista recebe o valor
 *lista = p; //lista recebe valor da direita
 }
}
void addfim(struct no **lista, int valor){//inserir no fim da lista
 struct no *pNow, *pNavegar; //ponteiro
de navegação
 printf("\nValor do Elemento: ");
 scanf("%d",&valor);
 pNavegar = *lista; //navegação recebe a lista
 if((pNow = malloc(sizeof(struct no))) == NULL){//erro
 printf("\nMemory Failure\n");
 }else{
 //para conter algum valor
 pNow->info = valor; //recebe valor
 pNow->direita = NULL; //direita e esquerda são nulos
 pNow->esquerda = NULL;
 if(*lista == NULL) {//lista vazia
 *lista = pNow;
 }else{
 while(pNavegar->direita != NULL){//navegar paraa o último elemento para inserir no fim
 pNavegar = pNavegar->direita;
 }
 pNavegar->direita = pNow; //o ultimo elemento recebe o valor (direita e esquerda do pNow continuam nulos)
 pNow->esquerda = pNavegar; //valor da esquerda recebe o valor contido acima e insere no fim
 }
 }
}
//--------------------------------------------------------------------------------------------------------
void imprimiresquerda(struct no *lista){//imprimir da esquerda para direita
 struct no *p;
 p = lista;
 if(p == NULL){//lista nula, lista vazia
 printf("\nLista Vazia");
 }else{
 while(p!=NULL) {//enquanto a lista não for nula
 printf("\nElemento: %d\n",p->info); //imprime o elemento
 p = p->direita; //passa para o próximo regitro
 }
 }
}
//-----------------------------------------------------------------------------------------
struct no *buscar(struct no *lista, int valor) {//função passada para buscar, e retornar ponteiro
 struct no *retorno; //ponteiro de retorno
 int encontrou = 0;
 retorno = NULL; //se não encontrar então retorno é nulo
 while(lista != NULL) {//enquanto a lista não for nula
 if((lista->info) == valor){//se valor digitado for encotnrado
 retorno = lista; //retorno recebe a lista, para retornar ponteiro
 encontrou = 1;
 break;
 }
 lista = lista->direita; //próximo elemento
 }
 if(encontrou == 1) {//encontrou
 printf("\nElemento Encontrado com Sucesso!\n");
 }else {//nao encontrou
 printf("\nElemento digitado %c inv%clido!\n",130,160);
 }
 return retorno;//retorno do ponteiro
}
//------------------------------------------------------------------------------------------
void remover(struct no **lista, int valor){//remover elemento desejado
 struct no *p,*aux;//auxiliar
 int encontrou = 0;
 p = *lista;
 printf("\nValor a Ser Removido: ");
 scanf("%d",&valor);
 aux = buscar(*lista, valor);//chamando função de busca
 if(*lista == NULL){//lista vazia
 printf("\nLista Vazia\n");
 }else{
 if(aux != NULL) {//se a lista não for nula
 if(aux->direita != NULL){//se no valor digitado a direita não for nula
 aux->direita->esquerda = aux->esquerda; //aux direita e esquerdqa recebe o valor da esquerda
 }
 if(aux->esquerda != NULL) {//e se a esquerda não for nula
 aux->esquerda->direita = aux->direita; //aux esquerda e direita recebe o valor da direita
 }else{//se os 2 forem nulos
 *lista = aux->direita;
 }
 free(aux);
 encontrou = 1;
 }
 if(encontrou == 1) {//mensagem
 printf("\nElemento removido com Sucesso!\n");
 }else{
 printf("\nElemento nao Encontrado\n");
 }
 }
}
//----------------------------------------------------------------------------
void menu(){//menu
 printf("\n1) Inserir Inicio");
 printf("\n2) Inserir no Fim");
 printf("\n3) Imprimir da Esquerda para Direita");
 printf("\n4) Buscar um Elemento e Exibir Ponteiro");
 printf("\n5) Remover Elemento Desejado");
 printf("\n\n0) Sair: ");
}
ListaDuplamenteEncadeada/lista.h
struct no{
 int info;
 struct no *esquerda, *direita; //direita = próximo elemento e esquerda = elemento anteriror
};
void menu();
void addinicio(struct no **lista, int valor); //inserir no inicio
void addfim(struct no **lista, int valor);
void imprimiresquerda(struct no *lista); //imprimir da esquerda para direita
void remover(struct no **lista, int valor);
struct no *buscar(struct no *lista, int valor);
ListaDuplamenteEncadeada/ListaDuplamenteEncadeada.pro
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += \
 main.c \
 principal.c
include(deployment.pri)
qtcAddDeployment()
HEADERS += \
 funcoes1.h \
 lista1.h \
 funcoes.h \
 lista.h
ListaDuplamenteEncadeada/ListaDuplamenteEncadeada.pro.user
 
 
 EnvironmentId
 {adb9ebfe-1bc2-4b54-b08b-e22ed67a7698}
 
 
 ProjectExplorer.Project.ActiveTarget
 0
 
 
 ProjectExplorer.Project.EditorSettings
 
 true
 false
 true
 
 Cpp
 
 CppGlobal
 
 
 
 QmlJS
 
 QmlJSGlobal
 
 
 2
 UTF-8
 false
 4
 false
 80
 true
 true
 1
 true
 false
 0
 true
 0
 8
 true
 1
 true
 true
 true
 false
 
 
 
 ProjectExplorer.Project.PluginSettings
 
 
 
 ProjectExplorer.Project.Target.0
 
 Desktop Qt 5.5.0 MinGW 32bit
 Desktop Qt 5.5.0 MinGW 32bit
 qt.55.win32_mingw492_kit
 0
 0
 0
 
 C:/Users/Diogo/Google Drive/PUC 2015-2/Enfase 1/Estrutura de dados/build-ListaDuplamenteEncadeada-Desktop_Qt_5_5_0_MinGW_32bit-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 false
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 C:/Users/Diogo/Google Drive/PUC 2015-2/Enfase 1/Estrutura de dados/build-ListaDuplamenteEncadeada-Desktop_Qt_5_5_0_MinGW_32bit-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 false
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 2
 
 ListaDuplamenteEncadeada
 
 Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Diogo/Google Drive/PUC 2015-2/Enfase 1/Estrutura de dados/ListaDuplamenteEncadeada/ListaDuplamenteEncadeada.pro
 
 ListaDuplamenteEncadeada.pro
 false
 true
3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.Target.1
 
 Desktop Qt 5.4.2 MinGW 32bit2
 Desktop Qt 5.4.2 MinGW 32bit2
 qt.54.win32_mingw491_kit
 0
 0
 0
 
 C:/Users/Diogo/Google Drive/PUC 2015-2/Enfase 1/Estrutura de dados/build-ListaDuplamenteEncadeada-Desktop_Qt_5_4_2_MinGW_32bit2-Debug
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 false
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Debug
 
 Qt4ProjectManager.Qt4BuildConfiguration
 2
 true
 
 
 C:/Users/Diogo/Google Drive/PUC 2015-2/Enfase 1/Estrutura de dados/build-ListaDuplamenteEncadeada-Desktop_Qt_5_4_2_MinGW_32bit2-Release
 
 
 true
 qmake
 
 QtProjectManager.QMakeBuildStep
 false
 true
 
 false
 false
 false
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 false
 
 
 
 2
 Build
 
 ProjectExplorer.BuildSteps.Build
 
 
 
 true
 Make
 
 Qt4ProjectManager.MakeStep
 
 true
 clean
 
 
 1
 Clean
 
 ProjectExplorer.BuildSteps.Clean
 
 2
 false
 
 Release
 
 Qt4ProjectManager.Qt4BuildConfiguration
 0
 true
 
 2
 
 
 0
 Deploy
 
 ProjectExplorer.BuildSteps.Deploy
 
 1
 Deploy locally
 
 ProjectExplorer.DefaultDeployConfiguration
 
 1
 
 
 
 false
 false
 false
 false
 true
 0.01
 10
 true
 1
 25
 
 1
 true
 false
 true
 valgrind
 
 0
 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 
 -1
 
 
 
 false
 %{buildDir}
 Custom Executable
 
 ProjectExplorer.CustomExecutableRunConfiguration
 3768
 false
 true
 false
 false
 true
 
 1
 
 
 
 ProjectExplorer.Project.TargetCount
 2
 
 
 ProjectExplorer.Project.Updater.FileVersion
 18
 
 
 Version
 18
 
ListaDuplamenteEncadeada/principal.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "lista.h"
#include "funcoes.h"
int main (){
 struct no *lista, *p;
 int op, valor;
 lista = NULL; //lista nula
 do{
 system("cls");
 menu();
 scanf("%d",&op);
 switch(op){
 case 0:
 break;
 case 1: //inserir ni inicio
 addinicio(&lista, valor);
 break;
 case 2:
 addfim(&lista, valor);
 break;
 case 3: //imrpimir da esquerda para direita
 imprimiresquerda(lista);
 break;
 case 4:
 printf("\nBuscar Elemento: ");
 scanf("%d",&valor);
 printf("\nPonteiro: %p",buscar(lista,valor));
 break;
 case 5:
 remover(&lista, valor);
 break;
 default:
 printf("\nOpcao Invalida!\n");
 break;
 }
 getch();
 }while(op!=0);
 while(lista!=NULL){//liberando memória
 p = lista;
 lista = lista->direita;
 free(p);
 }
 return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando

Outros materiais