此文章包含了栈的结构体实现,单数据类型实现,以及清空,判空,入栈,出栈,求栈顶元素的实现
转载请注明出自bestsort.cn
栈作为一个最简单的数据结构,实现起来也非常容易,想想现在有一摞盘子,每次只能取走或放一个盘子且只能最上面进行操作;
那么我们如果有一个索引TOP时刻指向最上面的那个盘子,栈不就实现了么?
第一段是单数据类型的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxn 110//栈的最大值
typedef int elem; //方便修改数据类型
typedef struct{
int top; ///栈顶的索引
elem index[maxn];
}Stack;
Stack stack; ///为了方便这里直接定义全局变量了,用局部变量的话在每个函数加上取地址符和声明就行了
void stack_pop(){ ///元素出栈,此函数无返回值
stack.top--;
}
void stack_push(elem buf){ ///元素入栈
stack.index[++stack.top] = buf;
}
int stack_empty(){///判空,如果栈为空的话返回1,否则返回0
return stack.top == -1;
}
void stack_clear(){ ///清空栈
stack.top = -1;
}
int stack_size(){ ///求栈内元素数
return stack.top+1;
}
elem stack_top(){ ///返回栈顶元素
return stack.index[stack.