数据结构(1-4)栈

#数据结构定义

#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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值