第一次使用栈

来源:互联网 发布:python飞机大战源代码 编辑:程序博客网 时间:2024/05/22 00:37

在网上找到一些关于栈的文章,于是自己动手试着写了一下,不写不知道,原来自己基础这么薄弱....

-----------------------------------

一个简单栈操作的实现步骤
1.初始化
2.压栈操作,//push(stack s,object o)
3.出栈操作,
4.销毁栈内存
其他操作,获取栈的当前容量  清空栈,遍历栈。
---------------------

简单的实现代码

#include <stdio.h>#include <stdlib.h>typedef struct {int *base;int *top;int stackSize;} stack;void initStack( stack * s, int size){s->top = s->base = (int *) malloc (sizeof(int)* size);if (s->base == NULL){printf("申请内存失败\n");exit(0);}s->stackSize = size;}int push(stack *s, int mem){if (s->base - s->top == - s->stackSize){s->base = (int *) realloc(s->base, (s->stackSize+10)*sizeof (int ));s->top = s->base + s->stackSize;s->stackSize += 10;}*(s->top) = mem;s->top++;return mem;}int pop(stack *s){if (s->base == s->top ){printf("栈空!\n");return 0;}s->top --;printf("%d ", *s->top);return *s->top ;}void destroystack(stack *s){free(s->base);}void main(){int size= 12;stack s;initStack(&s,10);for (int i= 0; i< size; i++)push(&s, i);for (i = 0 ;i < size-1; i++)pop(&s);destroystack(&s);}

-------------------------------------------------

可笑的是,在写的过程中,realloc函数的使用,我竟然忘了 *sizeof(int) 这一小部分了,也就是在增加内存的时候申请的空间小了,更搞笑的是,我花了一早上才意识到这个问题..........细节问题...........

 

原创粉丝点击