Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: preg2.h
- * Author: alulab11
- *
- * Created on 23 de mayo de 2014, 03:46 PM
- */
- #ifndef PREG2_H
- #define PREG2_H
- typedef char TElemento;
- typedef struct nodo{
- TElemento elem;
- struct nodo* ptrSig;
- }TNodo;
- typedef struct{
- TNodo *inicio;
- }TLista;
- void apilaOpuesto(TLista *, char);
- int es_cierre(char);
- void imprimeLista(TLista *lista);
- void crearLista(TLista *lista);
- TElemento desapilaOpuesto(TLista *);
- int esVacio(TLista *);
- #endif /* PREG2_H */
- #include <stdio.h>
- #include <stdlib.h>
- #include "lista.h"
- int es_cierre(char c){
- if (c == ']' || c == ')')
- return 1;
- return 0;
- }
- void apilaOpuesto (TLista *lista, char car){
- TNodo *ptrNuevo;
- ptrNuevo = (TNodo*)malloc(sizeof(TNodo));
- ptrNuevo->ptrSig = NULL;
- if (car == '['){
- ptrNuevo->elem = ']';
- }
- else if (car == '('){
- ptrNuevo->elem = ')';
- }
- ptrNuevo->ptrSig = lista->inicio;
- lista->inicio = ptrNuevo;
- }
- void imprimeLista(TLista *lista){
- TNodo *ptrRec;
- ptrRec = lista->inicio;
- while (ptrRec != NULL){
- printf("%c ",ptrRec->elem);
- ptrRec = ptrRec->ptrSig;
- }
- printf("NULL\n");
- }
- void crearLista(TLista *lista){
- lista->inicio = NULL;
- }
- TElemento desapilaOpuesto(TLista * lista){
- TNodo *ptrEliminar;
- TElemento car;
- ptrEliminar = lista->inicio;
- car = ptrEliminar->elem;
- lista->inicio = lista->inicio->ptrSig;
- free(ptrEliminar);
- return car;
- }
- int esVacio(TLista *lista){
- return (lista->inicio != NULL);
- }
- /*
- * File: main.c
- * Author: alulab11
- *
- * Created on 23 de mayo de 2014, 03:45 PM
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "lista.h"
- #define MAX 12
- /*
- *
- */
- int main(int argc, char** argv) {
- TLista lista;
- //crearLista(&lista);
- char cadena[MAX];
- TElemento car, car2;
- scanf("%s",cadena);
- int i;
- for(i=0;i<(strlen(cadena));i++){
- car = cadena[i];
- if (es_cierre(car)==0){
- apilaOpuesto(&lista,car);
- }
- else{
- if(esVacio(&lista)){
- printf("------> NO ES CORRECTA\n");
- return 0;
- }
- car2 = desapilaOpuesto(&lista);
- if (car2 != cadena[i]){
- printf("------> NO ES CORRECTA\n");
- return 0;
- }
- }
- }
- if (esVacio(&lista)){
- printf("------> NO ES CORRECTA\n");
- }
- else{
- printf("------> ES CORRECTA\n");
- }
- printf("\nLo que queda de la lista: \n");
- imprimeLista(&lista);
- return (EXIT_SUCCESS);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement