使用顺序表实现栈的c语言程序,【C语言版】使用顺序表实现栈

在数据结构中,栈是很重要的概念之一,但是C语言中却没有对应的数据结构。这大概是因为栈的结构过于简单。

通过顺序表,或者链表我们都可以实现一个栈。

在栈中,我们有入栈,出栈,取栈顶元素三种基本操作。除此之外,我们还应该对栈进行初始化,(初始化是编程中很重要的习惯,不爽不要编程)

#include #include #define 100 MAX;

typedef char StackType;

//extern StackType *data = (StackType*)malloc(sizeof(StackType));

typedef struct Stack{

StackType* st;

size_t size;

}Stack;

void StackInit(Stack* stack,StackType* base){//栈的初始化

if (stack == NULL)

return;

stack->size = 0;

stack->st = (StackType *)malloc((sizeof(StackType) * 100));

base = stack->st;

return;

}

在开始的时候,我想到的是用extern定义一个全局变量,然后用malloc开辟一块内存空间,但是在实际的过程中,我发现这个在外部定义全局变量会下降代码的可读性。让我们在实际使用时候忘记全局变量。所以最后我们采用在Init中对顺序表进行定义。

栈的入栈出栈,取栈顶元素:

Stack* StackDestroy(Stack* stack,StackType* base){//销毁

if (stack == NULL)

return NULL;

stack->size = 0;

free(base);

return NULL;

};

Stack* StackPush(Stack* stack,StackType value,StackType* base){//入栈

if (stack == NULL)

return NULL;

if (stack->size == MAX){

realloc(base,MAX*2);

}

stack->size++;

stack->st++;

*(stack->st) = value;

return stack;

};

Stack* StackPop(Stack* stack){//出栈

if (stack == NULL)

return NULL;

stack->size--;

stack->st--;

return stack;

}

StackType* StackTop(Stack* stack){//取栈顶元素

if (stack == NULL)

return NULL;

return stack->st;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值