栈(stack) 是限定仅在表尾进行插入或删除操作的线性表。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top) ,相应地,表头端称为栈底(bottom) 。不含元素的空表称为空栈。
照搬代码
#include#include #define STACK_MAX_SIZE 10 typedef struct CharStack{ int top; int data[STACK_MAX_SIZE]; }*CharStackPtr; void outputStack(CharStackPtr paraStack){ for(int i=0;i<=paraStack->top;i++){ printf("%c",paraStack->data[i]); }//of for i printf("rn"); }//of outputStack CharStackPtr CharStackInit(){ CharStackPtr resultPtr = (CharStackPtr)malloc(sizeof(CharStack)); resultPtr->top = -1; return resultPtr; }//of CharStackInit void push(CharStackPtr paraStackPtr,int paraValue){ //step 1.space check if(paraStackPtr->top>=STACK_MAX_SIZE - 1) { printf("Cannot push element:stack full.rn"); return; }//of if //step 2.update the top. paraStackPtr->top ++; //step 3.push element. paraStackPtr->data[paraStackPtr->top] = paraValue; }//of push char pop(CharStackPtr paraStackPtr){ //step 1.space check if(paraStackPtr->top<0){ printf("Cannot pop element:stack empty.rn"); return ' '; }//of if //step 2.update the top. paraStackPtr->top --; //step 3.push element. return paraStackPtr->data[paraStackPtr->top + 1]; }//of pop void pushPopTest(){ printf("----pushPopTest begins.----rn"); //initialize CharStackPtr tempStack = CharStackInit(); printf("After initialization,the stack is: "); outputStack(tempStack); //pop for(char ch='a';ch<'m';ch++){ printf("pushing %c.rn,ch"); push(tempStack,ch); outputStack(tempStack); } //of for i printf("----pushpoptest ends.----rn"); }//of pushpoptset int main() { pushPopTest(); }//of main
运行截图



