tengo un programa que maneja listas enlazadas y pase de parametros con cola(fila), ahora necesito el mismo pero que se maneje como pila(el primer valor que se ingresa es el ultimo en salir), aqui les dejo el programa que les digo aver si me pueden ayudar:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
struct nodo
{
int info;
nodo *ptr;
};
void insertar(struct nodo *&Lista, int &contador)
{
nodo *aux;
nodo *temp;
contador++;
if(contador==1)
{
aux=(nodo*)malloc(sizeof(nodo));
printf("\n Ingrese el valor del nodo: ");
scanf("%d",&aux->info);
aux->ptr=NULL;
Lista=aux;
}
else
{
temp=Lista;
while (temp->ptr!=NULL)
{
temp=temp->ptr;
}
aux=(struct nodo *)malloc(sizeof(nodo));
printf("\n Ingrese el valor del nodo: ");
scanf("%d",&aux->info);
aux->ptr=NULL;
temp->ptr=aux;
}
}
void mostrar (nodo *Lista, int contador)
{
nodo *temp;
temp=Lista;
while (temp!=NULL)
{
printf("%d | ",temp->info);
temp=temp->ptr;
}
printf("\nHay %d elementos en la lista\n",contador);
}
void eliminar(struct nodo *&Lista, int &contador)
{
nodo *aux;
if(contador>0)
{
aux=Lista;
Lista=aux->ptr;
free(aux);
contador--;
}
else
{
printf("\nNo hay elementos en la lista para eliminar\n");
}
}
void buscar (struct nodo *Lista)
{
int buscar,buscado;
int encontrado=0;
printf("\nElemento a buscar: \n");
scanf("%d",&buscado);
while (Lista!=NULL && encontrado==0)
{
if(Lista->info==buscado)
{
encontrado=1;
}
else
{
Lista=Lista->ptr;
}
}
if (encontrado==1)
printf("\nElemento encontrado en lista\n");
else
printf("\nEl elemento no existe en lista\n");
}
main()
{
struct nodo *Lista;
Lista=NULL;
int opcion, contador=0;
do{
printf("\n\t--- MENU DE OPCIONES ---\n\n");
printf("\t1.- Agregar elemento\n");
printf("\t2.- Eliminar elemento\n");
printf("\t3.- Mostrar elementos\n");
printf("\t4.- Buscar un elemento\n");
printf("\t5.- Salir\n");
printf("\n\tOpcion a elegir: ");
scanf("%d",&opcion);
switch (opcion)
{
case 1:
insertar(Lista,contador);
printf("Hay %d elementos en la lista\n",contador);
break;
case 2:
eliminar(Lista,contador);
break;
case 3:
mostrar(Lista,contador);
break;
case 4:
buscar(Lista);
break;
}
}
while (opcion!=5);
}
de antemano gracias