qué tal? Estoy aprendiendo recién pilas con C++ y mi problema radica en el error: violación de segmento('core' generado). A principio hacia el mismo codigo para insertar una pila y ,lo mismo para buscar,pero ahora que quiero modificar la pila me sale ese error.Pues les paso de dónde saqué la idea del algoritmo y el código que escribí yo porque lo estuve leyendo y por lo que vi no hay error.
Curso donde saqué los algoritmos:https://youtu.be/Ydr6-GhMmRg
Código hecho por mí:
#include <iostream>
#include <stdlib.h>
using namespace std;
//--estructura---
struct Nodo{
int dato;
Nodo *siguiente;
} *primero;
//Prototipo de funciones
void menu();
void insertarPila();
void mostrarPila();
void buscarPila();
void modificarPila();
//---MAIN---
int main(){
main();
return 0;
}
//---MENU---
void menu(){
int opc = 0;
do{
cout<<"\n\t.MENU.";
cout<<"\n1. Ingresar elemento.";
cout<<"\n2. Mostrar elementos.";
cout<<"\n3. Buscar elemento.";
cout<<"\n4.Modificar pila.";
cout<<"\n5.Salir.";
cout<<"\nOpcion: ";
cin>>opc;
switch(opc){
case 1: insertarPila();
break;
case 2: cout<<"\nLA PILA QUEDA ASI: ";
mostrarPila();
break;
case 3: buscarPila();
break;
case 4: modificarPila();
break;
case 5: break;
default: cout<<"\tEs del 1 al 4 pendejo\n\n";
}
system("clear");
}while(opc != 5);
}
//-----Funciones-----
void insertarPila(){
Nodo *nuevo = new Nodo();
cout<<"Digite el elemento para la pila: ";
cin>>nuevo->dato;
nuevo->siguiente = primero;
primero = nuevo;
cout<<"\n\tElemento ingresado correctamente";
}
void mostrarPila(){
Nodo *actual = new Nodo();
actual = primero;
if(primero != NULL){
while(actual != NULL){
cout<<" , "<<actual->dato;
actual = actual->siguiente;
}
}
else{
cout<<"\n\nPila vacia\n\n";
}
}
void buscarPila(){
Nodo *actual = new Nodo();
actual = primero;
int buscar_pila = 0;
bool encontrado = false;
cout<<"Ingrese el elemento a buscar: ";
cin>>buscar_pila;
if(primero != NULL){
while(actual != NULL && encontrado != true){
if(actual->dato == buscar_pila){
cout<<"El elemento buscado fue encontrado correctamente";
encontrado = true;
}
actual = actual->siguiente;
}
if (encontrado == false){
cout<<"El elemento que busca no se encuentra en la pila";
}
}
else{
cout<<"\n\nPila vacia\n\n";
}
}
void modificarPila(){
Nodo *actual = new Nodo();
actual = primero;
int buscar_pila = 0;
bool encontrado = false;
cout<<"Ingrese el elemento a buscar para modificar: ";
cin>>buscar_pila;
if(primero != NULL){
while(actual != NULL && encontrado != true){
if(actual->dato == buscar_pila){
cout<<"El elemento buscado fue encontrado correctamente";
cout<<"Digite el nuevo elemento: ";
cin>>actual -> dato;
cout<<"\n\tEl elemento fue modificado";
encontrado = true;
}
actual = actual->siguiente;
}
if (!encontrado){
cout<<"El elemento que busca no se encuentra en la pila";
}
}
else{
cout<<"\n\nPila vacia\n\n";
}
}
Cualquier cosa me avisan si necesitan X información y desde ya muchas gracias!