La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

LISTA ENLAZADA SIMPLE.  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en.

Presentaciones similares


Presentación del tema: "LISTA ENLAZADA SIMPLE.  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en."— Transcripción de la presentación:

1 LISTA ENLAZADA SIMPLE

2  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.

3  He aquí tenemos un ejemplo de una lista enlazada simple:  DECLARACIÓN DE PROTOTIPOS #include #include #include #include  DECLARAMOS LA ESTRUCTURA typedef struct nodo { int dato; struct nodo * siguiente; }tipoNodo;  RESERVAMOS EL ESPACIO DE MEMORIA tipoNodo *nuevo_elemento();

4  OPERACIONES QUE VAMOS A AREALIZAR void crear(); void insertar(); void insertar_inicio(); void insertar_ordenado(); void insertar_final(); void presentar(); void modificar(); void buscar(); void ordenar(); void ordenar_ascendente(); void ordenar_descendente(); void eliminar(); void eliminar_cabeza();  FUNCIÓN PARA EL CUADRO void cuadro(int x1,int y1, int x2, int y2, char simb);

5  NUESTRA CABEZA tipoNodo *cab; tipoNodo *nuevo_elemento() { tipoNodo *nodo1; nodo1=(tipoNodo *)malloc(sizeof(tipoNodo )); if(!nodo1) cout<<“No se ha reservado memoria para el nuevo “; return nodo1; } void main() { clrscr(); crear(); clrscr(); char opc=’ ‘;

6 do { clrscr(); cuadro(1,10,35,56,’²’); gotoxy(13,3);cout [ LISTAS ENLAZADAS ]<- \n”; gotoxy(12,6);cout<<” MENU PRINCIPAL\n”; gotoxy(12,9); cout<<” [1]: INSERTAR\n”; gotoxy(12,12);cout<<” [2]: MODIFICAR\n”; gotoxy(12,15);cout<<” [3]: BUSCAR\n”; gotoxy(12,17);cout<<” [4]: ORDENAR\n”; gotoxy(12,19);cout<<” [5]: ELIMINAR\n”; gotoxy(12,21);cout<<” [6]: PRESENTAR\n”; gotoxy(12,24);cout<<” [7]: SALIR DEL MENU\n”; gotoxy(12,27);cout >opc;

7 switch(opc) { case’1′: clrscr(); insertar();getch();break; case’2′: clrscr(); modificar();getch();break; case’3′: clrscr(); buscar();getch();break; case’4′: clrscr(); ordenar();getch();break; case’5′: clrscr(); eliminar();getch();break;

8 case’6′: clrscr(); presentar();getch();break; } }while(opc!=’7′); getch(); }  CREANDO LA CABEZA void crear() { clrscr(); cab=nuevo_elemento(); gotoxy(20,20); cout >cab->dato; cab->siguiente=NULL; getch(); }

9  MENU DE INSERTAR void insertar() { clrscr(); char opc=’ ‘; do { clrscr(); cuadro(1,10,35,56,’²’); gotoxy(13,3);cout [ LISTAS ENLAZADAS ]<-\n”; gotoxy(12,6);cout<<” MENU PRINCIPAL\n”; gotoxy(12,9); cout<<” [1]: INSERTAR AL INICIO\n”; gotoxy(12,12);cout<<” [2]: insertar AL FINAL\n”; gotoxy(12,15);cout<<” [3]: INSERTAR ORDENADO\n”; gotoxy(12,18);cout<<” [4]: REGRESAR\n”; gotoxy(12,21);cout >opc;

10 switch(opc) { case’1′: clrscr(); insertar_inicio();getch();break; case’2′: clrscr(); insertar_final();getch();break; case’3′: clrscr(); insertar_ordenado();getch();break; } }while(opc!=’4′); getch(); }

11  INSERATAR AL INICIO void insertar_inicio() { clrscr(); nodo *pAuxElem; nodo *recorre; pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo)); while(recorre->siguiente!=NULL) { recorre=recorre->siguiente; } int n; gotoxy(20,20); cout >n; pAuxElem->dato=n; pAuxElem->siguiente=cab; cab=pAuxElem; }

12  INSERTAR AL FINAL void insertar_final() { clrscr(); nodo *elem; elem=nuevo_elemento(); clrscr(); gotoxy(20,20); cout >elem->dato; nodo *recorrer; recorrer=cab; while(recorrer->siguiente!=NULL) recorrer=recorrer->siguiente; recorrer->siguiente=elem; elem->siguiente=NULL; getch(); }

13  INSERTAR ORDENADO void insertar_ordenado() { clrscr(); nodo *pAuxElem; nodo *post; nodo *recorre; pAuxElem=(tipoNodo*) malloc(sizeof(tipoNodo)); post=(tipoNodo*) malloc(sizeof(tipoNodo)); int n; gotoxy(20,20); cout >n; if(n dato) { post=cab->siguiente; while((pAuxElem->dato>post->dato)&&(post- >siguiente!=NULL)) { post=post->siguiente; }

14 if(post->siguiente!=NULL) { pAuxElem->siguiente=cab; cab=pAuxElem; } else { pAuxElem->siguiente=NULL; post->siguiente=pAuxElem; } } else { while(recorre->siguiente!=NULL) { recorre=recorre->siguiente; } pAuxElem->dato=n; pAuxElem->siguiente=cab; cab=pAuxElem; }

15  PARA MODIFICAR void modificar() { clrscr(); nodo *elem; nodo *ele; gotoxy(10,25);cout >elem->dato; nodo *recorrer; recorrer=cab;

16 while(recorrer!=NULL) { if(recorrer->dato==elem->dato) { clrscr(); gotoxy(20,20); cout >ele->dato; recorrer->dato=ele->dato; } recorrer=recorrer->siguiente; } getch(); }  PARA BUSCAR void buscar() { clrscr(); nodo *elem;

17 gotoxy(10,25);cout >elem->dato; nodo *recorrer; recorrer=cab; while(recorrer!=NULL){ if(recorrer->dato==elem->dato){ clrscr(); gotoxy(20,20); cout dato dato=elem->dato; } recorrer=recorrer->siguiente; } getch(); }

18  ORDENAR void ordenar() { clrscr(); char opc=’ ‘; do { clrscr(); cuadro(1,10,25,56,’²’); gotoxy(13,3);cout [ ORDENAR LAS LISTAS ENLAZADAS ]<-\n”; gotoxy(12,6);cout<<” MENU PRINCIPAL\n”; gotoxy(12,9); cout<<” [1]: ORDENAR ASCENDENTE\n”; gotoxy(12,12);cout<<” [2]: ORDENAR DESCENDENTE\n”; gotoxy(12,15);cout<<” [3]: REGRESAR\n”; gotoxy(12,17);cout >opc;

19 switch(opc){ case’1′: clrscr(); ordenar_ascendente();getch();break; case’2′: clrscr(); ordenar_descendente();getch();break; } } while(opc!=’3′); getch(); } void ordenar_ascendente(){ nodo* aux; nodo* temp; int vaux; aux=(tipoNodo *)malloc(sizeof(tipoNodo)); temp=(tipoNodo *)malloc(sizeof(tipoNodo)); aux=cab;

20 while (aux!=NULL){ temp=aux; while(temp->siguiente!=NULL){ temp=temp->siguiente; if(aux->dato>temp->dato){ vaux=aux->dato; aux->dato=temp->dato; temp->dato=vaux; } } aux=aux->siguiente; } } void ordenar_descendente(){ nodo* aux; nodo* temp; int vaux; aux=(tipoNodo *)malloc(sizeof(tipoNodo)); temp=(tipoNodo *)malloc(sizeof(tipoNodo)); aux=cab;

21 while (aux!=NULL) { temp=aux; while(temp->siguiente!=NULL) { temp=temp->siguiente; if(aux->dato dato) { vaux=aux->dato; aux->dato=temp->dato; temp->dato=vaux; } } aux=aux->siguiente; } }

22  ELIMINAR void eliminar() { presentar(); nodo *eliminar; // nodo *recorrer; nodo *asigna; gotoxy(10,25);cout >eliminar->dato;

23 // recorrer=cab; if (eliminar->dato==cab->dato){ eliminar_cabeza(); }else{ nodo *anterior=cab; nodo * aux=cab->siguiente; while((aux!=NULL)&&(aux->dato!=eliminar->dato)){ anterior=aux; aux=aux->siguiente; } if(aux!=NULL){ anterior->siguiente=aux->siguiente; aux->siguiente=NULL; free(aux); }else{ gotoxy(10,33); cout<<“NO SE ENCUENTRA”; } } }

24  ELIMINAR CABEZA void eliminar_cabeza(){ nodo *aux; aux=cab; cab=cab->siguiente; aux->siguiente=NULL; free(aux); }  PRESENTAR LA LISTA void presentar(){ clrscr(); int f=10; nodo *recorrer; recorrer=cab; gotoxy(20,f); while(recorrer!=NULL){ gotoxy(20,f); cout dato; cout<<“\n\n”;

25 recorrer=recorrer->siguiente; f=f+2; } getch();}  PRESENTAR LOS BORDES DE UN CUADRO void cuadro(int x1,int y1, int x2, int y2, char simb) { for (int i1=y1;i1<=y2;i1++) { gotoxy(i1,x1);cout<<simb; gotoxy(i1,x2);cout<<simb; } for (int i2=x1;i2<=x2;i2++) { gotoxy(y1,i2);cout<<simb; gotoxy(y2,i2);cout<<simb; } }


Descargar ppt "LISTA ENLAZADA SIMPLE.  La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en."

Presentaciones similares


Anuncios Google