Código (c) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
void insertarnodoinicio();
void insertarnodoalfinal();
void insertarentrenodos();
void eliminarnodoinicio();
void eliminarnodofinal();
void eliminarentredosnodos();
void buscarnumero();
void mostrarnodo();
typedef struct datos{
struct datos *psig;
int numero;
}dato;
dato *cab=NULL;
dato *n=NULL;
dato *aux=NULL;
dato *p=NULL;
dato *q;
int x,pos,numerodenodos=0,opc;
int main()
{
do{
printf("\n************************* ELIGE UNA OPCION **********************************\n\n");
printf(" 1.-Insertar Un Nodo al Inicio\n");
printf(" 2.-Insertar Un Nodo al Final\n");
printf(" 3.-Insertar entre dos Nodos\n");
printf(" 4.-Mostrar Lista\n");
printf(" 5.-Buscar Nodo\n");
printf(" 6.-Eliminar Nodo al Inicio\n");
printf(" 7.-Eliminar Nodo Final\n");
printf(" 8.-Eliminar Entre dos nodos\n");
printf(" 9.-Salir\n");
printf("\n\nTeclee su opcion: ");
scanf("%d",&opc);
switch(opc){
case 1:
insertarnodoinicio();
break;
case 2:
insertarnodoalfinal();
break;
case 3:
insertarentrenodos();
break;
case 4:
mostrarnodo();
break;
case 5:
buscarnumero();
break;
case 6:
eliminarnodoinicio();
break;
case 7:
eliminarnodofinal();
break;
case 8:
eliminarentredosnodos();
break;
case 9:
exit(0);break;
default:
printf("Opcion no valida");break;
}
}while(opc!=9);
getch();
}
void eliminarentredosnodos()
{
q=cab;
int h=1;
if (cab=NULL)
printf("La lista esta vacia");
else
{
printf("Ingrese Nodo a eliminar: ");
scanf("%d",&x);
while (q->numero!=x && h==1)
{
if (q->psig!=NULL)
{
p=q;
q=q->psig;
}
else
h=0;
}
if (p->psig==NULL)
printf("Elemento no Encontardo");
else
{
if (cab=q)
cab=q->psig;
else
p->psig=q->psig;
}
delete(q);
}
getch();
system("CLS");
}
void eliminarnodofinal()
{
p=cab;
if (cab==NULL)
printf("No hay Numeros en la lista");
if (cab->psig==NULL)
{
delete (cab);
cab=NULL;
}
else
{
while(p->psig!=NULL)
{
aux=p;
p=p->psig;
}
aux->psig=NULL;
delete p;
numerodenodos--;
}
getch();
system("cls");
}
void eliminarnodoinicio()
{
if (cab==NULL)
printf("No hay numeros que eliminar");
else
{
aux=cab;
cab=cab->psig;
delete (aux);
aux=NULL;
numerodenodos--;
}
getch();
system("cls");
}
void buscarnumero()
{
int eli;
if (cab==NULL)
{
printf("No hay numeros en la lista");
}
else
{
q=cab;
printf("Que Numero desea buscar: ");
scanf("%d",&x);
pos=1;
while(q!=NULL && q->numero!=x)
{
q=q->psig;
pos++;
}
if (q!=NULL)
printf("%d Esta en la lista y en la posicion %d\n",x,pos);
else
{
printf("%d No esta en la lista\n",x);
}
}
getch();
system("cls");
}
void insertarnodoinicio(){
n=(dato*)malloc(sizeof (struct dato));
printf("\nElementos a insertar: ");
scanf("%d",&x);
n->numero=x;
n->psig=NULL;
if(cab==NULL)
cab=n;
else{
n->psig=cab;
cab=n;
}
numerodenodos++;
system("CLS");
}
void mostrarnodo()
{
if(cab==NULL)
printf("Lista vacia.........\n");
else{
p=cab;
printf("\nLista de numeros...\n");
while(p!=NULL){
printf("\n%d\n",p->numero);
p=p->psig;
}
printf("\nEl numero de nodos es: %d ",numerodenodos);
}
getch();
system("CLS");
}
void insertarnodoalfinal()
{
n= (dato*)malloc(sizeof(dato));
printf("Ingresa dato: ");
scanf("%d",&x);
n->numero=x;
n->psig=NULL;
if(cab==NULL){
cab=n;
numerodenodos++;
}
else{
p=cab;
while(p->psig!=NULL)
{
p=p->psig;
}
p->psig=n;
numerodenodos++;
}
getch();
system("CLS");
}
void insertarentrenodos()
{
if(cab==NULL)
printf("No hay elementos");
else
{
printf("Ingrese la posicion en que desees insertar: ");
scanf("%d",&pos);
if(pos> numerodenodos || pos==1)
printf("Solamente es valido entre 2 nodos");
else
{
n=(dato*)malloc(sizeof(dato));
printf("Ingresa dato: ");
scanf("%d",&x);
n->numero=x;
n->psig=NULL;
aux=cab;
for(int i=1; i<pos-1; i++)
{
aux=aux->psig;
}
n->psig=aux->psig;
aux->psig=n;
numerodenodos++;
}
}
getch();
system("cls");
}