#数据结构定义
#define DataType int
#define maxn 100005
struct stack{
Datatype data[maxn];
int top;//data[top-1]表示栈顶元素,top==0表示空栈
}
#入栈操作
void stackpushstack(struck stack *stk,DataType dt){
stk->data[stk->top]=dt;
stk->top=stk->top+1;
}
或者是
void stackpushstack(strck stack *stk,DataType dt)
{
stk->data[stk->top++]=dt;
}
#出栈
void StackPopStack(struck Stack *std){
--std->top;
}
#清空栈
void StackClear(struck Stack *std){
std->top=0;
}
#只读接口包含:获取栈顶元素、获取栈大小、栈的判空,实现如下:
DataType StuckGetTop(struck Stack *stk){
return stk->data[stk->top-1];
}
int StackGetSize(Struck Stack *stk){
return stk->top;
}
bool StackIsEmpty(struck Stack stk)
{
return !StackGetSize(stk);
}
#栈的链式表实现
typedef int DataType;
struct StackNode;
struct StackNode{
DataType data;
struck StackNode *next;
};
struct Stack{
struck stackNode* top;
int size;
}
#栈的插入(头插法)
void StackPushStack(struck Stack *stk,DataType dt){
struck StackNode *insertNode=(struck StackNode*)malloc(sizeof(struct StackNode));
insertNode->next=stk->top;
insertNode->data=dt;
stk->top=insertNode;
++stk->size;
}
#栈的删除
void StackPopStack(struck stack *stk){
struck stack *tmp=stk->top;
stk->top=temp->next;
free(temp);
stk->top--;
}
#栈的清空
void StackClear(struct stack *stk){
while(!StackIsEmpty(stk)){
StackPopStack(stk);
}
stk->top=null;
}
#只读接口包含:获取栈顶元素、获取栈大小、栈的判空,
DataType StackGetTop(struct stack *stk){
retrun stk->top->data;
}
int StackGetSize(struct stack *stk){
return stk->size;
}
int StackIsEmpty(struct stack *stk){
return !StackGetSize;
}