栈的实现演示
来源:互联网 发布:数码视讯 知乎 编辑:程序博客网 时间:2024/04/29 23:46
#include <stdio.h>#include <stdlib.h>typedef int elementype;#define MAX 100void creatstack();int isempty();int isfull();void push(elementype x,elementype *stack);elementype pop(elementype *stack);void printstack(elementype *stack);elementype top = -1;elementype *stack;int main(){ elementype n,c;if((stack = (elementype *)malloc(sizeof(elementype)*MAX))== NULL)return 1; //creatstack(); printf("please input choose:\n"); printf("0 represent push;\n"); printf("1 represent pop.\n"); printf("2 represent show.\n"); while(scanf("%d",&n) != EOF){ switch(n){ case 0: printf("please input element you want insert:\n"); scanf("%d",&c); push(c,stack); break; case 1: printf("you will delete the top element of stack\n"); c = pop(stack); printf("the element you have poped out is:%d\n",c); break; case 2: printf("show the stack:\n"); printstack(stack); default: printf("please choose again\n");break; } } return 0;}/*void creatstack(){ // elementype stack[MAX];}*/void printstack(elementype *stack){ int i = 0; if(isempty()) printf("cannot print stack ,because your stack is empty.\n"); else{ printf("the stack is:\n"); for(i = 0;i <= top;i++) printf("%d-->",*(stack + i)); } printf("end.\n");}int isempty(){ return top == -1;} int isfull(){ return top == MAX;}void push(elementype x,elementype *stack){ if(isfull()) printf("the stack is full,please delete.\n"); else{ top = top +1; *(stack + top) = x; }}elementype pop(elementype *stack){ if (isempty()){ printf("the stack is empty ,please puse and then pop\n"); return (elementype)0; } else{ top = top -1; return *(stack + top + 1); }}