Autor
|
Tema: Programacion de Pilas en C (Leído 1,237 veces)
|
Alex0101
Desconectado
Mensajes: 1
|
Tengo este codigo es para manejar pilas en c pero no me quiere correr no le encuentro error espero que me puedan ayudar!! #include "stdafx.h" #include <stdio.h> #include <stdlib.h> typedef struct stackNode STACKNODE; typedef STACKNODE * STACKNODEP; void push(STACKNODEP*, int); int pop(STACKNODEP*); int isVacia(STACKNODEP); void imprimePila(STACKNODEP); void menu(void); void menu(void) { printf("1. Insertar un nodo a la pila\n"); printf("2. Eliminar un nodo de la pila\n"); } void imprimepila(STACKNODEP actualP) { if (actualP == NULL) { } else { while (actualP != NULL) { printf("%d->", actualP ->data ); actualP = actualP->nextP; } } } int pop(STACKNODEP *topP) { STACKNODEP tempP; int sacarvalor; tempP = *topP; sacarvalor = (*topP)->data; *topP = (*topP)->nextP; return sacarvalor; } void push(STACKNODEP *topP, int info) { STACKNODEP nuevoP; nuevoP = (STACKNODEP ) malloc(sizeof(STACKNODE )); /*Correcion*/ if (nuevoP != NULL) { nuevoP->data = info; nuevoP->nextP = *topP; *topP = nuevoP; } else { printf("\n No se inserto el elemento %d en la pila", info ); } } struct stackNode { int data; struct stackNode * nextP; }; int isVacia(STACKNODEP topP) { return (topP == NULL); } int main() { STACKNODEP stackP = NULL; int op, valor; menu(); printf("\n Elige una opcion:"); while (op != 3) { switch (op) { case 1: printf("\n Teclea un entero"); push(&stackP, valor); imprimePila(stackP); break; case 2: if (!isVacia(stackP)) { printf("\n El valor sacado es: %d", pop (&stackP )); } imprimePila(stackP); break; default: printf("\n Opcion no valida"); break; } } return 0; }
|
|
« Última modificación: 15 Febrero 2016, 22:08 pm por Eternal Idol »
|
En línea
|
|
|
|
abaadoon
Desconectado
Mensajes: 19
|
#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(" 6.-Eliminar Nodo al Inicio\n"); printf(" 7.-Eliminar Nodo Final\n"); printf(" 8.-Eliminar Entre dos nodos\n"); printf("\n\nTeclee su opcion: "); 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: default: printf("Opcion no valida");break ; } }while(opc!=9); } void eliminarentredosnodos() { q=cab; int h=1; if (cab=NULL) printf("La lista esta vacia"); else { printf("Ingrese Nodo a eliminar: "); 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); } } 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--; } } void eliminarnodoinicio() { if (cab==NULL) printf("No hay numeros que eliminar"); else { aux=cab; cab=cab->psig; delete (aux); aux=NULL; numerodenodos--; } } void buscarnumero() { int eli; if (cab==NULL) { printf("No hay numeros en la lista"); } else { q=cab; printf("Que Numero desea buscar: "); 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 ); } } } void insertarnodoinicio(){ n =(dato *)malloc(sizeof (struct dato )); printf("\nElementos a insertar: "); n->numero=x; n->psig=NULL; if(cab==NULL) cab=n; else{ n->psig=cab; cab=n; } numerodenodos++; } void mostrarnodo() { if(cab==NULL) printf("Lista vacia.........\n"); else{ p=cab; printf("\nLista de numeros...\n"); while(p!=NULL){ p=p->psig; } printf("\nEl numero de nodos es: %d ",numerodenodos ); } } void insertarnodoalfinal() { n = (dato *)malloc(sizeof(dato )); 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++; } } void insertarentrenodos() { if(cab==NULL) else { printf("Ingrese la posicion en que desees insertar: "); if(pos> numerodenodos || pos==1) printf("Solamente es valido entre 2 nodos"); else { n =(dato *)malloc(sizeof(dato )); 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++; } } }
|
|
« Última modificación: 15 Febrero 2016, 22:08 pm por Eternal Idol »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pilas recargables
Electrónica
|
sirnejo
|
2
|
2,332
|
28 Abril 2005, 05:45 am
por DevilInsideTk
|
|
|
pilas
Electrónica
|
airam_dark_artist
|
1
|
2,563
|
18 Abril 2005, 10:29 am
por + enrique ZP
|
|
|
Pilas en c++
Programación C/C++
|
GABETORAP
|
3
|
2,710
|
2 Diciembre 2011, 01:56 am
por .:UND3R:.
|
|
|
Pilas en c++
Programación C/C++
|
GABETORAP
|
1
|
1,945
|
2 Diciembre 2011, 05:41 am
por [L]ord [R]NA
|
|
|
¿ESTOY VIENDO PROGRAMACION 2 Y SE COMO HACER PILAS Y COSAS ASI PERO NO TENGO LOG
Foro Libre
|
maicol_962016
|
1
|
1,689
|
13 Febrero 2016, 19:00 pm
por fary
|
|