Listas
/*da la oportunidad de introducir o sacar elementos de la pila 5 veces*/ for (i=0; itop= -1 ; } /* verifica si la pila esta vacia */ int Empty(STACK * ps) { if (ps->top == -1) return(TRUE); else return(FALSE); } /* verifica si la pila esta llena, si ya no se pueden introducir mas elementos en el arreglo */ intFull(STACK * ps) { if (ps->top == STACKSIZE - 1) return(TRUE); else return(FALSE); } /* introduce un elemento en la pila */ void Push(STACK * ps, STACKELEMENT x) { if (Full(ps)) { printf("%s","Pila desbordada"); exit(1); } else PROGRAMACION II (SISTEMAS) 2 CICLO I/2009
ps->items[++(ps->top)]=x; } /* quita un elemento de la pila y lo devuelve */ STACKELEMENT Pop(STACK * ps) { if (Empty(ps)) {printf("%s","Pila subdesbordada"); exit(1); } return(ps->items[(ps->top)--]); } 2. Modifique el programa anterior para que la función main() sea mas flexible: que le de la oportunidad al usuario de escoger cuantas operaciones de pila desea realizar. 3. A continuación se tiene un programa que origina una línea de texto y utiliza una pila para imprimir la línea invertida. /*Programa que origina unalínea de texto y utilice una pila para imprimir la línea invertida.*/ #include #include #include #define MAXCOLS 80 #define TRUE 1 #define FALSE 0 struct stack { int tope; char elementos[MAXCOLS]; }; int empty(struct stack *); char pop(struct stack *); void push(struct stack *, char); void main() { char linea[MAXCOLS]; char invert[MAXCOLS]; int pos=0, i; struct stack pila; pila.tope=-1; while((linea[pos++]=getchar()) != '\n'); linea[--pos]= '\0'; printf("La linea original es:\n %s", linea); for (i=0; ielementos[ps->tope--]); } void push(struct stack *ps, char a) { if (ps->tope == MAXCOLS - 1) { printf("Desbordamiento de pila\n"); exit(1); } ps->elementos[++ps->tope]=a; } 4. Modifique el programa anterior para que también cuente el número de vocales que tiene la línea de texto. 5. Pruebe elsiguiente programa (use extensión .cpp) que hace una conversión de interfija a postfija. Los operandos validos son las letras de la A a la Z y los dígitos 0 a 9. Las operaciones validas solo incluyen división ( / ), multiplicación ( * ), suma ( + ) y resta ( - ). # include // por cout # include // por malloc(), free() # include // por clrscr() # include // por getchar() #define MAXCOLS 80...
Regístrate para leer el documento completo.