pag. 1 listas enlazadas ing. betty suárez torres
TRANSCRIPT
![Page 1: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/1.jpg)
Pag. 1
LISTAS ENLAZADASIng. Betty Suárez Torres
![Page 2: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/2.jpg)
Pag. 2
DEFINICIÓN
Una lista enlazada es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por un «enlace» o «puntero».
Los elementos de una lista se llaman nodos y se componen de dos partes o campos: la primera parte o campo contiene la información y la segunda parte o campo es un puntero (denominado enlace o sgte) que apunta al siguiente elemento de la lista.
a1 a2 a3…..
![Page 3: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/3.jpg)
Pag. 3
CLASIFICACIÓN DE LAS LISTAS ENLAZADAS
Simplemente enlazadas
Doblemente enlazadas
Circular simplemente
enlazada
Circular doblemente
enlazada
Cada nodo (elemento) contiene un único enlace que conecta ese nodo al nodo siguiente o nodo sucesor. La lista es eficiente en recorridos directos ((<adelante»).
Cada nodo contiene dos enlaces, uno a su nodo predecesor y el otro a su nodo sucesor. La lista es eficiente tanto en recorrido directo («adelante») como en recorrido inverso («atrás»).
Una lista enlazada simplemente en la que el último elemento (cola) se enlaza al primer elemento (cabeza) de tal modo que la lista puede ser recorrida de modo circular («en anillo»).
Una lista doblemente enlazada en la que el último elemento se enlaza al primer elemento y viceversa. Esta lista se puede recorrer de modo circular (en anillo) tanto en dirección directa («adelante») como inversa («atrás»).
Por cada uno de estos cuatro tipos de estructuras de listas, se puede elegir una implementación basada en arrays (asignación fija o estática) o una implementación basada en punteros (asignación dinámica de memoria mediante punteros).
![Page 4: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/4.jpg)
Pag. 4
OPERACIÓN: DECLARAR UN NODO
C++struct nodo{int info;struct nodo *sig;};
info sig
nodo
![Page 5: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/5.jpg)
Pag. 5
OPERACIÓN: INSERTAR A INICIO DE LA LISTA
10 25 40
CAB
NULL
1000 1001 1002
75AUX
1100
10 25 40
CAB
NULL
1000 1001 1002
75AUX
1100
NULL
10 25 40CAB NULL
1000 1001 1002
75
AUX
1100
10 25 40CAB NULL
1000 1001 1002
75
1100
CAB=10=DM10=1000AUX->DATO=75AUX->SIG=NULL
AUX->SIG=CAB=10=DM10=1000CAB=AUX=10=DM10=1000
void insertarc(void){AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->sig=NULL;if(CAB!=NULL){AUX->sig=CAB; }CAB=AUX;
![Page 6: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/6.jpg)
Pag. 6
OPERACIÓN: INSERTAR AL FINAL DE LA LISTA
10 25 40
CAB
NULL
1000 1001 1002
75AUX
1100
10 25 40
CAB
NULL
1000 1001 1002
NULL
P
P
10 25 40
CAB
NULL
1000 1001 1002
P
10 25 40
CAB
NULL
1000 1001 1002
75AUX
1100
NULL
P
10 25 40
CAB
NULL
1000 1001 1002
P
75
1100
P=CAB=10=dm10=1000P->sig=25=dm25=1001P->sig=40=dm40=1002
P->sig=AUX=75=dm75=1100
void insertar(void){AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->sig=NULL;if(CAB==NULL){ CAB=AUX; }else{ P=CAB; while(P->sig!=NULL){ P=P->sig; } P->sig=AUX; }
![Page 7: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/7.jpg)
Pag. 7
OPERACIÓN: INSERTAR ANTES DE
10 25 40
CAB
NULL
1000 1001 1002
75Q
1100
10 25 40
CAB
NULL
1000 1001 1002
NULL
AUX
T
75Q
1100
10 75 25
CAB
NULL
1000 1100 1001
40
1002
AUX
X=25AUX=CAB=10=DM10=100010!=25 (v) T=AUX=10 AUX=AUX->sig=40=dm25=100125!=25 (f)T->sig=Q=75=dm75=1100Q=Q->sig=AUX=25=dm25=1001
![Page 8: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/8.jpg)
Pag. 8
void insertara(void){struct nodo *Q, *T;int x, sw;if(CAB==NULL){printf("\n¡¡Lista vacia!!..."); getch(); }else{ AUX=CAB; sw=1;printf("\nInsertar antes de..."); scanf("%d",&x); while((AUX->info!
=x)&&(sw==1)&&(AUX!=NULL)){
if(AUX->sig!=NULL){ T=AUX; AUX=AUX->sig; } else { sw=0; } }
if(sw==0){printf("\n¡¡%d no esta en la lista!!...\n", x); getch(); } else{ Q=new(nodo); printf("\nNumero a insertar: ") ; scanf("%d", &Q->info); if(CAB==AUX){ Q->sig=CAB; CAB=Q; } else{ T->sig=Q; Q->sig=AUX; }printf("\n¡¡Ha sido insertado!!") ; getch(); }} }
![Page 9: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/9.jpg)
Pag. 9
void insertad(void){struct nodo *Q;int x;if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); }else{ AUX=CAB;printf("\nInsertar despues de..."); scanf("%d",&x); while((AUX->info!=x)&&(AUX!
=NULL)){ AUX=AUX->sig; }
if(AUX==NULL){printf("\n¡¡%d no esta en la lista!!...", x); getch(); } else{ Q=new(nodo); printf("\nNumero a insertar: ") ; scanf("%d", &Q->info); Q->sig=AUX->sig; AUX->sig=Q;printf("\n¡¡Ha sido insertado!!") ; getch(); } }}
INSERTAR DESPUÉS DE
![Page 10: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/10.jpg)
Pag. 10
OPERACIÓN: ELIMINAR UN ELEMENTO
10 25 40
CAB
NULL
1000 1001 1002
10 25 40
CAB
NULL
1000 1001 1002
AUX P
AUX P
10 25 40
CAB
NULL
1000 1001 1002
AUX PNULL
X=40P=CAB=10=dm10=100010!=40 (v) AUX=P=10 P=P->sig=dm25=100125!=40 (v) AUX=P=25 P=P->sig=dm40=100240!=40 (f)AUX->sig=P->sig=NULL
![Page 11: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/11.jpg)
Pag. 11
void elimina(void){int x, sw=1;if(CAB==NULL) { printf("\n¡¡Lista vacia!!..."); getch(); }else{printf("\nEliminar el elemento..."); scanf("%d", &x); P=CAB; while(((P->info)!=x)&&(sw==1)){ if((P->sig)!=NULL){ AUX=P; P=P->sig; } else{
sw=0; } } if(sw==0){printf("\n¡¡%d no esta en la lista!!...", x); getch(); } else{ if(P==CAB){ CAB=CAB->sig; } else{ AUX->sig=P->sig; } free(P);printf("\n%d ha sido eliminado", x); getch(); } } }
![Page 12: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/12.jpg)
Pag. 12
OPERACIÓN: ELIMINAR EL PRIMER ELEMENTO
10 25 40
CAB
NULL
1000 1001 1002
10 25 40
P
NULL
1000 1001 1002
P
CAB
25 40 NULL
1001 1002
CAB
P=CAB=10CAB=CAB->sig=dm25=1001
void eliminap(void){if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); } else{ P=CAB;printf("\n%d ha sido eliminado",
P->info); getch(); if(P->sig==NULL){ CAB=NULL; } else{ CAB=CAB->sig; } free(P); } }
![Page 13: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/13.jpg)
Pag. 13
OPERACIÓN: ELIMINAR ÚLTIMO ELEMENTO10 25 40
CAB
NULL
1000 1001 1002
P AUX
10 25 40
CAB
NULL
1000 1001 1002
PAUX
10 25 40
CAB
NULL
1000 1001 1002
PAUX
10 25 40
CAB
NULL
1000 1001 1002
PAUX
10 25
CAB
NULL
1000 1001
AUX
10 25 40 NULL
1000 1001 1002
PAUXCAB
P=CAB=10AUX=P=10P=P->sig=dm25=1001AUX=25P=P->sig=dm40=1002P=P->sig=NULLAUX->sig=NULL
void eliminau(void){if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); } else{ P=CAB; if(P->sig==NULL){ CAB=NULL; } else{ while(P->sig!=NULL){ AUX=P; P=P->sig; } AUX->sig=NULL;}printf("\n%d ha sido eliminado", P-
>info); getch(); free(P); } }
![Page 14: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/14.jpg)
Pag. 14
OPERACIÓN: ELIMINAR ANTES DE
10 25 40
CAB
NULL
1000 1001 1002
P AUX
10 25 40
CAB
NULL
1000 1001 1002
QAUX
10 25 40
CAB
NULL
1000 1001 1002
QP
10 40 NULL
1000 1002
CAB
Q
P
AUX
X=40
Q=CAB=10AUX=CAB=10P=CAB=10
Q->info!=x 10!=40 P=AUX=10 AUX=Q=10 Q=Q->sig=dm25=100125!=40 P=AUX=10 AUX=Q=25 Q=Q->sig=dm40=100240!=40P=P->sig=Q=dm40=1002
![Page 15: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/15.jpg)
Pag. 15
void elimina_a(void){struct nodo *Q;int x;if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); } else{printf("\nEliminar antes de..."); scanf("%d",&x); if(CAB->info==x){printf("\n¡¡No existen elementos antes de %d!!", x); getch(); return; } else{ Q=CAB; AUX=CAB; P=CAB;
while((Q!=NULL)&&(Q->info!=x)){ P=AUX; AUX=Q; Q=Q->sig; } if(Q==NULL){printf("\n¡¡%d no esta en la lista!!...", x); getch(); } else{ P->sig=Q;printf("%d ha sido eliminado", AUX->info); getch(); free(AUX); } } } }
![Page 16: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/16.jpg)
Pag. 16
OPERACIÓN: ELIMINAR DESPUÉS DE
10 25 40
CAB
NULL
1000 1001 1002
P
10 25 40
CAB
NULL
1000 1001 1002
P
10 25 40
CAB
NULL
1000 1001 1002
AUX
10 25 NULL
1000 1001
CAB
P
10 25 40
CAB
NULL
1000 1001 1002
P AUX
X=25
P=CAB=10P->info!=x10!=25 P=P->sig=dm25=100125!=25
AUX=P->sig=dm10=1000P->sig=AUX->sig=NULLAUX->sig=NULL
![Page 17: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/17.jpg)
Pag. 17
void elimina_d(void){int x, sw=1;if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); }else{printf("\nEliminar despues de..."); scanf("%d",&x); P=CAB; while((sw==1)&&(P->info!=x)){ if(P->sig!=NULL){ P=P->sig; } else{ sw=0; } }//fin del while
if(P->info!=x){printf("\n¡¡%d no esta en la lista!!...", x); getch(); return; } if(P->sig==NULL){printf("\n¡¡No existen elementos después de %d!!" , x); getch() } else{ AUX=P->sig; P->sig=AUX->sig; AUX->sig=NULL;printf("\n%d ha sido eliminado " , AUX->info); getch(); free(AUX); }}//fin del else }
![Page 18: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/18.jpg)
Pag. 18
OPERACIÓN: BUSCAR
X=40AUX=CAB=10
10!=40 y AUX!=NULL Aux=AUX->sig=dm2525!=40 y AUX!=NULL Aux=AUX->sig=dm4040!=40 y AUX!=NULL
![Page 19: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/19.jpg)
Pag. 19
void buscar(void){int x;if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); } else{AUX=CAB;printf("\n--BUSQUEDA--\n");printf("Digite el elememto a buscar..."); scanf("%d", &x); while((AUX->info!=x)&&(AUX!=NULL)){ AUX=AUX->sig; } if(AUX==NULL){printf("\n¡¡%d no esta en la lista!!...", x); getch(); } else{printf("\n%d esta en la lista...", x); getch(); } } }
![Page 20: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/20.jpg)
Pag. 20
OPERACIÓN: MOSTRAR
10 25 40
CAB
NULL
1000 1001 1002
AUX
10 25 40
CAB
NULL
1000 1001 1002
AUX
10 25 40
CAB
NULL
1000 1001 1002
AUX
AUX=AUX->sig=dm25=1001AUX=AUX->sig=dm40=1002AUX=AUX->sig=NULL
void mostrar(void){int i=1;if(CAB==NULL) {printf("\n¡¡Lista vacia!!..."); getch(); return; } AUX=CAB;printf("\nContenido de la lista\n");while(AUX!=NULL){printf("%d\n",AUX->info); AUX=AUX->sig; i++; } getch();}
![Page 21: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/21.jpg)
Pag. 21
PROGRAMA COMPLETO LISTAS ENLAZADAS SIMPLES
#include<stdio.h>#include<conio.h>#include<iostream> //freeusing namespace std;
struct nodo{int info;struct nodo *sig;};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;int valor;
void insertar(void);void mostrar(void);void insertarc(void);void buscar(void);void ordenar(void);void insertad(void);void submenu (void);void insertara(void);void eliminar(void);void elimina(void);void eliminap(void);void eliminau(void);void elimina_a(void);void elimina_d(void);
![Page 22: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/22.jpg)
Pag. 22
void main(){int op;do{
printf("\n--MENU PRINCIPAL--\n");printf("1.Insertar \n");printf("2.Eliminar \n"); printf("3.Buscar elemento\n");printf("4.Ordenar la lista\n");printf("5.Mostrar\n");printf("0.Salir\n");printf("Escoja una opcion: ");scanf("%d",&op);switch(op){
case 1:submenu(); break;case 2:eliminar(); break;case 3:buscar(); break;case 4:ordenar(); break;case 5:mostrar(); break;
}}while(op!=0);getch(); }//fin del main
![Page 23: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/23.jpg)
Pag. 23
void submenu (void){int opc;do{
printf("\n--INSERTAR--\n");printf("1.Insertar al final\n");printf("2.Insertar al comienzo\n");printf("3.Insertar antes de\n");printf("4.Insertar despues de\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:insertar(); break;case 2:insertarc(); break;case 3:insertara(); break;case 4:insertad(); break;
}}while(opc!=0);
}//fin de submenu
![Page 24: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/24.jpg)
Pag. 24
void insertar(void){AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->sig=NULL;if(CAB==NULL){
CAB=AUX;}else{
P=CAB;while(P->sig!=NULL){
P=P->sig;}P->sig=AUX;
}}//fin de insertar al final
void insertarc(void){AUX=new(nodo);printf("\nNumero a insertar:
") ;scanf("%d", &AUX->info);AUX->sig=NULL;if(CAB!=NULL){
AUX->sig=CAB;}CAB=AUX; }
![Page 25: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/25.jpg)
Pag. 25
void insertara(void){struct nodo *Q, *T;int x, sw;Q=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &Q->info);printf("\nInsertar antes de...");scanf("%d",&x);if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;sw=1;while((AUX->info!=x)&&(sw==1)&&(AUX!=NULL)){
if(AUX->sig!=NULL){T=AUX;AUX=AUX->sig;
}else
sw=0; }
![Page 26: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/26.jpg)
Pag. 26
if(sw==0){printf("\n¡¡%d no esta en la lista!!...\n", x);getch();
}else{
if(CAB==AUX){Q->sig=CAB;CAB=Q;
}else{
T->sig=Q;Q->sig=AUX;
}printf("\n¡¡Ha sido insertado!!") ;getch();}
}}//fin de insertar antes de
![Page 27: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/27.jpg)
Pag. 27
void insertad(void){struct nodo *Q;int x;Q=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &Q->info);printf("\nInsertar despues de...");scanf("%d",&x);if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
AUX=CAB;while((AUX->info!=x)&&(AUX!=NULL)){
AUX=AUX->sig;}
![Page 28: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/28.jpg)
Pag. 28
if(AUX==NULL){printf("\n¡¡%d no esta en la lista!!...", x);getch();
}else{
Q->sig=AUX->sig;AUX->sig=Q;printf("\n¡¡Ha sido insertado!!") ;getch();
}}
}//fin de insertar despues de
![Page 29: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/29.jpg)
Pag. 29
void eliminar(void){int opc;do{
printf("\n--ELIMINAR--\n");printf("1.Eliminar el elemento\n");printf("2.Eliminar el primer elemento\n");printf("3.Eliminar el ultimo elemento\n");printf("4.Eliminar antes de\n");printf("5.Eliminar despues de\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:elimina(); break;case 2:eliminap(); break;case 3:eliminau(); break;case 4:elimina_a(); break;case 5:elimina_d(); break;
} }while(opc!=0);}//fin de eliminar
![Page 30: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/30.jpg)
Pag. 30
void elimina(void){int x, sw=1;if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
printf("\nEliminar el elemento...");scanf("%d", &x);P=CAB;while(((P->info)!=x)&&(sw==1)){
if((P->sig)!=NULL){AUX=P;P=P->sig;
}else
sw=0; }
![Page 31: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/31.jpg)
Pag. 31
if(sw==0){printf("\n¡¡%d no esta en la lista!!...", x);getch();
}else{
if(P==CAB)CAB=CAB->sig;
elseAUX->sig=P->sig;
free(P);printf("\n%d ha sido eliminado", x);getch();}
}} //fin de eliminar el elemento
![Page 32: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/32.jpg)
Pag. 32
void eliminap(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;if(P->sig==NULL)
CAB=NULL;else
CAB=CAB->sig;printf("\n%d ha sido eliminado", P->info);free(P);}
getch(); }// fin de eliminar primero
![Page 33: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/33.jpg)
Pag. 33
void eliminau(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;if(P->sig==NULL)
CAB=NULL;else{
while(P->sig!=NULL){AUX=P;P=P->sig;
}AUX->sig=NULL;
}printf("\n%d ha sido eliminado", P->info);free(P);getch();
}}//fin de eliminar ultimo
![Page 34: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/34.jpg)
Pag. 34
void elimina_a(void){struct nodo *Q;int x;printf("\nEliminar antes de...");scanf("%d",&x);if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
if(CAB->info==x){printf("\n¡¡No existen elementos antes de %d!!",
x);getch();return;
}else{
Q=CAB;AUX=CAB;P=CAB;
![Page 35: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/35.jpg)
Pag. 35
while((Q!=NULL)&&(Q->info!=x)){P=AUX;AUX=Q;Q=Q->sig;
}if(Q==NULL){
printf("\n¡¡%d no esta en la lista!!...", x);getch();
}else{
P->sig=Q;printf("%d ha sido eliminado", AUX->info);free(AUX);
}}
}getch();
}//fin de eliminar antes de
![Page 36: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/36.jpg)
Pag. 36
void elimina_d(void){int x, sw=1;printf("\nEliminar despues de...");scanf("%d",&x);if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;while((sw==1)&&(P->info!=x)){
if(P->sig!=NULL){P=P->sig;
}else{
sw=0;}
}//fin del while
![Page 37: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/37.jpg)
Pag. 37
if(sw==0){printf("\n¡¡%d no esta en la lista!!...", x);getch();return;}
if(P->sig==NULL){printf("\n¡¡No existen elementos después de %d!!" , x);getch();
}else{
AUX=P->sig;P->sig=AUX->sig;AUX->sig=NULL;printf("\n%d ha sido eliminado " , AUX->info);free(AUX);
}}//fin del else
getch();}//fin de eliminar despues de
![Page 38: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/38.jpg)
Pag. 38
void buscar(void){int x,sw;if(CAB==NULL) {
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;printf("\n--BUSQUEDA--\n");printf("Digite el elememto a buscar...");scanf("%d", &x);sw=1;while((AUX->info!=x)&&(sw==1)&&(AUX!=NULL)){
if(AUX->sig!=NULL)AUX=AUX->sig;
else sw=0;
}if(sw==0)
printf("\n¡¡%d no esta en la lista!!...\n", x);else
printf("\n¡¡%d si esta en la lista!!...\n", x);} } //fin de buscar
![Page 39: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/39.jpg)
Pag. 39
void ordenar(void){int temp;if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;while(AUX->sig!=NULL){
P=AUX->sig;while(P!=NULL){
if((AUX->info)>(P->info)){temp=AUX->info;AUX->info=P->info;P->info=temp;
}P=P->sig;
}AUX=AUX->sig;
}printf("\n¡¡La lista ha sido ordenada!!...");getch(); } }//fin de ordenar
![Page 40: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/40.jpg)
Pag. 40
void mostrar(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();return;
}AUX=CAB;printf("\nContenido de la lista\n");while(AUX!=NULL){
printf("%d\t",AUX->info);AUX=AUX->sig;
}getch();
}//fin de mostrar
![Page 41: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/41.jpg)
Pag. 41
FUNCIONES: MALLOC / NEWEstas funciones, se utilizan para pedirle memoria a la computadora, lo cual puede realizarse en las misma función de insertar.Estas funciones devuelven una dirección de memoria que es la dirección del nuevo nodo, que se guarda, en la variable p.
FUNCIONES: DELETE / FREELa función free se usa en C para liberar almacenamiento de una variable asignada dinámicamente. La orden free(p); invalida cualquier referencia futura a la variable *p (a menos que se asigne nuevo espacio de memoria a esa variable). Llamar free(p) hace que quede disponible para reuso el almacenamiento ocupado por *p, si es necesario.
![Page 42: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/42.jpg)
Pag. 42
LISTAS DOBLEMENTE ENLAZADAS
En la lista doblemente enlazada, cada elemento contiene dos punteros, aparte del valor almacenado en el elemento. Un puntero apunta al siguiente elemento de la lista y el otro puntero apunta al elemento anterior.
DI DI DI
CAB
DerechoDatoIzquierdo
NODO
LISTA
![Page 43: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/43.jpg)
Pag. 43
OPERACIONES
• INSERTAR
• ELIMINAR
D I
DI
D DI I
![Page 44: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/44.jpg)
Pag. 44
SINTAXIS: DECLARACIÓN
struct nodo{
int info;
nodo *anterior;
nodo *siguiente;
};
SiguienteInfoAnterior
NODO
![Page 45: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/45.jpg)
Pag. 45
OPERACIONES: INSERTAR AL INICIO
10 25 40NULL NULL
1000 1001 1002
CAB
75NULL NULL
AUX
1100
10 25 40NULL NULL
1000 1001 1002
CAB
75NULL
AUX
75 10 25NULL
1100 1000 1001
CAB
40 NULL
1002
CAB
CAB=10AUX->dato=75AUX->ant=NULLAUX->sig=NULL
AUX->sig=CAB=10=dm10=1000
AUX->ant=NULLCAB->ant=AUX=75=dm75=1100
AUX=new(nodo);printf("\nNumero a insertar:");scanf("%d", &AUX->info);AUX->ant=NULL;AUX->sig=CAB;if(CAB!=NULL){
CAB->ant=AUX;}CAB=AUX;
![Page 46: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/46.jpg)
Pag. 46
OPERACIONES: INSERTAR AL FINAL10 25 40NULL NULL
1000 1001 1002
CAB
75NULL NULL
AUX
1100
10 25 40NULL
1000 1001 1002
CAB
75 NULL
AUX
10 25 40NULL
1000 1001 1002
CAB
75 NULL
1100
TEMP
10 25 40NULL NULL
1000 1001 1002
CABTEMP
10 25 40NULL NULL
1000 1001 1002
CABTEMP
TEMP
TEMP AUX
TEMP=CAB=10TEMP=TEMP->sig=dm25=1001TEMP=TEMP->sig=dm40=1002
TEMP->sig=AUX=75=dm75=1100AUX->ant=TEMP=40=dm40=1002
struct nodo *TEMP;AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->ant=NULL;AUX->sig=NULL;if(CAB==NULL)
CAB=AUX;else{ TEMP=CAB; while(TEMP->sig!=NULL){
TEMP=TEMP->sig; } TEMP->sig=AUX; AUX->ant=TEMP;}
![Page 47: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/47.jpg)
Pag. 47
OPERACIONES: INSERTAR ANTES DE
10 25 40NULL NULL
1000 1001 1002
CAB
75NULL NULL
NUEVO
1100
10 25 40NULL
1000 1001 1002
CAB
75
NULL
NUEVO
10 25 75NULL
1000 1001 1100
CAB
40NULL
1002
TEMP
10 25 40NULL NULL
1000 1001 1002
CABTEMP
TEMP
TEMP NUEVO
P
P
X=40CAB=10NUVO->sig=NULLTEMP=CAB=10
10!=40 P=TEMP=10 TEMP=TEMP->sig=dm25=100125!=40 P=TEMP=25 TEMP=TEMP->sig=dm40=100240!=40P->sig=NUEVO=dm75=1100NUEVO->sig=TEMP=40=dm40=1002NUEVO->ant=P=25=dm25=1001TEMP->sig=NUEVO=75=dm75=1100
![Page 48: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/48.jpg)
Pag. 48
OPERACIONES: ELIMINAR AL INICIO
10 25 40NULL NULL
1000 1001 1002
CABP
10 25 40NULL
1000 1001 1002
CABP
NULL
NULL
TEMP=CAB=10CAB=CAB->sig=dm25=1001CAB->ant=NULL
if(CAB==NULL){printf("\n¡¡Lista vacia!!...");getch(); }
else{P=CAB;if(P->sig==NULL)
CAB=NULL;else
CAB=CAB->sig;printf("\n%d ha sido eliminado", P->info);free(P); }
![Page 49: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/49.jpg)
Pag. 49
OPERACIONES: ELIMINAR AL FINAL
10 25 40NULL NULL
1000 1001 1002
CABP
10 25 40NULL
1000 1001 1002
PCAB
NULL
TEMP
10 25 40
1000 1001 1002
TEMPCAB
NULL
PNULL
NULL
TEMP=CAB=10P=CAB=10
P=TEMP=10TEMP=TEMP->sig=25=dm25=1001P=TEMP=25TEMP=TEMP->sig=40=dm40=1002P->sig=NULL
if(CAB==NULL){printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;if(P->sig==NULL)
CAB=NULL;else{
while(P->sig!=NULL){AUX=P;P=P->sig;
}AUX->sig=NULL;
}printf("\n%d ha sido eliminado", P->info);free(P);7
![Page 50: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/50.jpg)
Pag. 50
OPERACIONES: ELIMINAR ANTES DE
10 25 40NULL NULL
1000 1001 1002
CABTEMP
10 25 40NULL
1000 1001 1002
PCAB
NULL
TEMP
10 25 40
1000 1001 1002
TEMPCAB
NULL
P
NULL
P
10 25 40NULL
1000 1001 1002
TEMPCAB
NULL
P
X=40TEMP=CAB=10P=CAB=1010!=40 TEMP=P=10 P=P->sig=25=dm25=100125!=40 TEMP=P=25 P=P->sig=40=dm40=100240!=40CAB->sig=dm40=1002P->ant=CAB=10
![Page 51: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/51.jpg)
Pag. 51
PROGRAMA COMPLETO LISTAS DOBLEMENTE ENLAZADAS
#include<stdio.h>#include<conio.h>#include<iostream>using namespace std;
struct nodo{int info;struct nodo *ant;struct nodo *sig;};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;int valor;void insertar(void);void mostrar(void);void insertarc(void);void buscar(void);void insertad(void);void submenu (void);void eliminar(void);void elimina(void);void eliminap(void);void eliminau(void);
![Page 52: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/52.jpg)
Pag. 52
void main(){int op;do{
printf("\n--MENU PRINCIPAL--\n");printf("1.Insertar \n");printf("2.Eliminar \n"); printf("3.Buscar elemento\n");printf("4.Mostrar\n");printf("0.Salir\n");printf("Escoja una opcion: ");scanf("%d",&op);switch(op){
case 1:submenu(); break;case 2:eliminar(); break;case 3:buscar(); break;case 4:mostrar(); break;
}}while(op!=0);getch(); }//fin del main
![Page 53: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/53.jpg)
Pag. 53
void submenu (void){int opc;do{
printf("\n--INSERTAR--\n");printf("1.Insertar al final\n");printf("2.Insertar al comienzo\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:insertar(); break;case 2:insertarc(); break;
}}while(opc!=0);
}//fin de submenu
![Page 54: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/54.jpg)
Pag. 54
void insertar(void){struct nodo *TEMP;AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->ant=NULL;AUX->sig=NULL;if(CAB==NULL){
CAB=AUX;}else{
TEMP=CAB;while(TEMP->sig!=NULL){
TEMP=TEMP->sig;}TEMP->sig=AUX;AUX->ant=TEMP;}
}//fin de insertar al final
![Page 55: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/55.jpg)
Pag. 55
void insertarc(void){AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->ant=NULL;AUX->sig=CAB;if(CAB!=NULL){
CAB->ant=AUX;}CAB=AUX;
}//fin insertar al comienzo
![Page 56: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/56.jpg)
Pag. 56
void eliminar(void){int opc;do{
printf("\n--ELIMINAR--\n");printf("1.Eliminar el elemento\n");printf("2.Eliminar el primer elemento\n");printf("3.Eliminar el ultimo elemento\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:elimina(); break;case 2:eliminap(); break;case 3:eliminau(); break;
} }while(opc!=0);}//fin de eliminar
![Page 57: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/57.jpg)
Pag. 57
void elimina(void){ int x, sw=1; if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
} else{
printf("\nEliminar el elemento...");
scanf("%d", &x);P=CAB;while(((P->info)!
=x)&&(sw==1)){if((P->sig)!=NULL){
AUX=P;P=P->sig;
}else
sw=0; }
if(sw==0){ printf("\n¡¡%d no esta en la lista!!...", x); getch();}else{ if(P==CAB)
CAB=CAB->sig; else
AUX->sig=NULL; free(P); printf("\n%d ha sido eliminado", x); getch();}}} //fin de eliminar el elemento
![Page 58: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/58.jpg)
Pag. 58
void eliminap(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;if(P->sig==NULL)
CAB=NULL;else
CAB=CAB->sig;printf("\n%d ha sido eliminado", P-
>info);free(P);
}getch();
}// fin de eliminar primero
![Page 59: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/59.jpg)
Pag. 59
void eliminau(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
}else{
P=CAB;if(P->sig==NULL)
CAB=NULL;else{
while(P->sig!=NULL){AUX=P;P=P->sig;
}AUX->sig=NULL;
}printf("\n%d ha sido eliminado", P->info);free(P);getch();
}}//fin de eliminar ultimo
![Page 60: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/60.jpg)
Pag. 60
void buscar(void){ int x,sw; if(CAB==NULL) {
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;printf("\n--BUSQUEDA--\n");printf("Digite el elememto a buscar...");scanf("%d", &x);sw=1;while((AUX->info!=x)&&(sw==1)&&(AUX!=NULL)){
if(AUX->sig!=NULL)AUX=AUX->sig;
else sw=0; }
if(sw==0){printf("\n¡¡%d no esta en la lista!!...\n", x);getch(); }
else{printf("\n¡¡%d si esta en la lista!!...\n", x);
getch(); } } } //fin de buscar
![Page 61: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/61.jpg)
Pag. 61
void mostrar(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");return;
}AUX=CAB;printf("\nContenido de la lista\n");while(AUX!=NULL){
printf("%d\t",AUX->info);AUX=AUX->sig;
}getch();
}//fin de mostrar
![Page 62: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/62.jpg)
Pag. 62
LISTAS CIRCULARES
Una lista circular es una lista lineal en la que el último nodo a punta al primero.Las listas circulares evitan excepciones en la operaciones que se realicen sobre ellas. No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente.En algunas listas circulares se añade un nodo especial de cabecera, de ese modo se evita la única excepción posible, la de que la lista esté vacía.
5
-4 1
7
CAB
![Page 63: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/63.jpg)
Pag. 63
OPERACIONES: INSERTAR AL INICIO
10 25 40
1000 1001 1002
CAB
75
AUX
10 25 40
1000 1001 1002
CAB
75
AUX
1100
1100
AUX->sig=AUXAUX->sig=CAB->sig=10=1000CAB->sig=AUX=75=1100
AUX=new(nodo);printf("\nNumero a insertar: ") ;scanf("%d", &AUX->info);AUX->sig=AUX;if(CAB==NULL)
CAB=AUX;else{
AUX->sig=CAB->sig;CAB->sig=AUX;
}
![Page 64: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/64.jpg)
Pag. 64
OPERACIONES: ELIMINAR UN ELEMENTO
10 25 40
1000 1001 1002
CAB
75
1100
SW=0P
X
10 25 40
1000 1001 1002
CAB
75
1100
SW=0
P
10 25 40
1000 1001 1002
CAB
75
1100
SW=1P
AUX
SW=0 X=40P=CAB=1010!=40
SW=0P=25
25!=40SW=0P=40
40!=40SW=1
AUX=P->sig=40=1002P->sig=AUX->sig=75=110040 Eliminado
![Page 65: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/65.jpg)
Pag. 65
void elimina(void){ int x, sw=0; if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
} else{
printf("\nEliminar el elemento...");
scanf("%d",&x);P=CAB;while(P->sig!=CAB && !sw){
sw=(P->sig->info==x);if(!sw)
P=P->sig;}sw=(P->sig->info==x);
if(sw){ AUX=P->sig; if(CAB==CAB->sig)
CAB=NULL; else{
if(AUX==CAB){CAB=P;}
P->sig=AUX->sig; } free(AUX);} } getch();} //fin de eliminar el elemento
![Page 66: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/66.jpg)
Pag. 66
OPERACIONES: BUSCAR UN ELEMENTO
10 25 40
1000 1001 1002
CAB
75
1100
SW=0 AUX
X
10 25 40
1000 1001 1002
CAB
75
1100
SW=0 AUX
10 25 40
1000 1001 1002
CAB
75
1100
SW=1AUX
X=40SW=(10==40)=0
AUX=25SW=(25==40)=0
AUX=40SW=1
40 Encontrado
![Page 67: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/67.jpg)
Pag. 67
void buscar(void){int x,sw=0;if(CAB==NULL) {
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;printf("\n--BUSQUEDA--\n");printf("Digite el elememto a buscar...");scanf("%d", &x);while(AUX->sig!=CAB&&!sw){
sw=(AUX->sig->info==x);if(!sw)
AUX=AUX->sig;}sw=(AUX->sig->info==x);if(sw)
printf("%d encontrado",x);else
printf("%d no encontrado",x);} getch(); } //fin de buscar
![Page 68: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/68.jpg)
Pag. 68
OPERACIONES: MOSTRAR ELEMENTOS
10 25 40
1000 1001 1002
CAB
75
1100
P
X
10 25 40
1000 1001 1002
CAB
75
1100
P
10 25 40
1000 1001 1002
CAB
75
1100
P
10 25 40
1000 1001 1002
CAB
75
1100
P
P=10Mostrar 10P=25Mostrar 25P=40Mostrar 40P=40Mostrar 40
if(CAB==NULL){ printf("\n¡¡Lista vacia!!..."); getch(); return;}if(CAB!=NULL){ P=CAB->sig; do{
printf("%d \t",P->info);P=P->sig;
}while(P!=CAB->sig);}
![Page 69: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/69.jpg)
Pag. 69
PROGRAMA COMPLETO LISTAS CIRCULARES SIMPLES
#include<stdio.h>#include<conio.h>#include<iostream> //freeusing namespace std;
struct nodo{int info;struct nodo *sig;};
struct nodo *CAB=NULL, *AUX=NULL, *P=NULL;void mostrar(void);void insertarc(void);void buscar(void);void submenu (void);void eliminar(void);void elimina(void);
![Page 70: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/70.jpg)
Pag. 70
void main(){int op;do{
printf("\n--MENU PRINCIPAL--\n");printf("1.Insertar \n");printf("2.Eliminar \n"); printf("3.Buscar elemento\n");printf("4.Mostrar\n");printf("0.Salir\n");printf("Escoja una opcion: ");scanf("%d",&op);switch(op){
case 1:submenu(); break;case 2:eliminar(); break;case 3:buscar(); break;case 4:mostrar(); break;
}}while(op!=0);getch();}//fin del main
![Page 71: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/71.jpg)
Pag. 71
void submenu (void){ int opc; do{
printf("\n--INSERTAR--\n");printf("1.Insertar al comienzo\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:insertarc(); break;
} }while(opc!=0);}//fin de submenu
void insertarc(void){ AUX=new(nodo); printf("\nNumero a insertar: ") ; scanf("%d", &AUX->info); AUX->sig=AUX; if(CAB==NULL)
CAB=AUX; else{
AUX->sig=CAB->sig;CAB->sig=AUX;
} }//fin insertar al comienzo
![Page 72: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/72.jpg)
Pag. 72
void eliminar(void){int opc;do{
printf("\n--ELIMINAR--\n");printf("1.Eliminar el elemento\n");printf("0.Volver al menu principal...\n");printf("Digite una opcion: ");scanf("%d",&opc);switch(opc){
case 1:elimina(); break;}
}while(opc!=0);}//fin de eliminar
![Page 73: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/73.jpg)
Pag. 73
void elimina(void){ int x, sw=0; if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();
} else{
printf("\nEliminar el elemento...");
scanf("%d",&x);P=CAB;while(P->sig!=CAB && !sw){
sw=(P->sig->info==x);if(!sw)
P=P->sig;}sw=(P->sig->info==x);
if(sw){ AUX=P->sig; if(CAB==CAB->sig)
CAB=NULL; else{
if(AUX==CAB){CAB=P;}
P->sig=AUX->sig; } free(AUX);} } getch();} //fin de eliminar el elemento
![Page 74: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/74.jpg)
Pag. 74
void buscar(void){int x,sw=0;if(CAB==NULL) {
printf("\n¡¡Lista vacia!!...");getch(); }
else{AUX=CAB;printf("\n--BUSQUEDA--\n");printf("Digite el elememto a buscar...");scanf("%d", &x);while(AUX->sig!=CAB&&!sw){
sw=(AUX->sig->info==x);if(!sw)
AUX=AUX->sig;}sw=(AUX->sig->info==x);if(sw)
printf("%d encontrado",x);else
printf("%d no encontrado",x);} getch(); } //fin de buscar
![Page 75: Pag. 1 LISTAS ENLAZADAS Ing. Betty Suárez Torres](https://reader035.vdocuments.us/reader035/viewer/2022062809/5665b4991a28abb57c928350/html5/thumbnails/75.jpg)
Pag. 75
void mostrar(void){if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");getch();return;
}if(CAB!=NULL){
P=CAB->sig;do{
printf("%d \t",P->info);P=P->sig;
}while(P!=CAB->sig);}getch();
}//fin de mostrar