#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
/*实现顺序栈*/
typedef struct SqStack{
int *base;
int *top;
int stacksize;
}SqStack;
/*初始化*/
SqStack * initStack(){
SqStack *sqStack = (SqStack *)malloc(sizeof(SqStack *));
sqStack -> base = (int *)malloc(sizeof(MAXSIZE));
sqStack -> top = (int *)malloc(sizeof(int));
if(!sqStack -> base) return 0; //存储分配失败,退出
sqStack -> top = sqStack -> base;
sqStack -> stacksize = MAXSIZE;
return sqStack;
}
/*入栈*/
int push(SqStack *sqStack,int *elem){
if(sqStack -> top - sqStack -> base == MAXSIZE) return 0;
*sqStack -> top = *elem;/
sqStack -> top ++;
return 1;
}
/*出栈*/
int * pop(SqStack *sqStack){
int *topElem = (int *)malloc(sizeof(int));
if(sqStack -> top == sqStack -> base) return 0; //空栈,没有栈顶元素,退出!
*topElem = *(--sqStack -> top );
return topElem;
}
/*取栈顶元素*/
int * getTop(SqStack *sqStack){
int *topElem = (int *)malloc(sizeof(int));
*topElem = *(sqStack -> top - 1);
return topElem;
}
/*显示栈的元素个数,由自己实现!*/
int getStackLength(SqStack * sqStack){
return sqStack -> top - sqStack -> base;
}
int main(){
int * data = (int *)malloc(sizeof(int));
int * topElem;// = (int *)malloc(sizeof(int));
int * delElem;
*data = 100;
SqStack *sqStack;
sqStack = initStack();
push(sqStack,data);
*data = 200;
push(sqStack,data);
printf("栈的元素个数:%d\n",getStackLength(sqStack));
delElem = pop(sqStack);
printf("删除元素:%d\n",*delElem);
topElem = getTop(sqStack);
printf("顶元素为%d\n",*topElem);
printf("栈的元素个数:%d\n",getStackLength(sqStack));
return 0;
}
栈的顺序实现(c语言)
最新推荐文章于 2024-03-31 22:38:45 发布