Está en la página 1de 3

Lista enlazada simple

Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser
usada para implementar otras estructuras de datos. Consiste en una secuencia
de nodos, en los que se guardan campos de datos arbitrarios y una o dos
referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio
de las listas enlazadas respecto a los vectores convencionales es que el orden de
los elementos enlazados puede ser diferente al orden de almacenamiento en la
memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente
al de almacenamiento.

Operaciones que realiza el programa:


*insertar nodo
*mostrar lista
*eliminar nodo

#include<stdio.h>
#include<conio.h>
#include<stdlib.h> // Biblioteca que permite el uso de la función free
#include<iostream>
using 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 elimina(void);
int j;

int main (){


int op;
j=0;
do{
printf("\n-----MENU PRINCIPAL-----\n");
printf("\n--Listas simples--\n\n");
printf("1.Insertar \n");
printf("2.Eliminar \n");
printf("3.Mostrar la lista \n");
printf("0.Salir\n\n");
printf("Escoja una opcion: ");
scanf("%d",&op);
switch(op){
case 1:{
insertar();
j=j+1;
break;
}
case 2:elimina(); break;
case 3:mostrar(); break;
}
}while(op!=0);
getch();
}//fin del main
void insertar(void){
AUX=new(nodo);
printf("\nNumero a insertar: ") ;
scanf("%d", &AUX->info);
AUX->sig=NULL;
printf("%d valor de cab",CAB);
if(CAB!=NULL)
{ AUX->sig=CAB; }
CAB=AUX;
}

void elimina(void){
int x, sw=1,i;
printf("%d valor de cab",CAB);
if(CAB==NULL){
printf("\n¡¡Lista vacia!!...");
getch();
}
else{
printf("\nEliminar el elemento...");
scanf("%d", &x);

for(i=0;i<=2;i++){
P=CAB;
while(((P->info)!=x)&&(sw==1)){//entra
if((P->sig)!=NULL){
AUX=P;
P=P->sig;
}
else
sw=0;
}
if(sw==0){
getch();
}
else{
if(P==CAB)
CAB=CAB->sig;
else{
free(P);
printf("\n%d ha sido eliminado", x);
}
}
getch();
}//termina for
}
} //fin de eliminar el elemento

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

KAREN CABEZAS LICERA


UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
COMPUTACION CIENTIFICA

También podría gustarte