点击(此处)折叠或打开
-
#include <stdio.h>
-
#include <stdlib.h>
-
#include <string.h>
-
-
#define MAX 10
-
-
//顺序栈中,能存数的元素个数为MAX个
-
//1.类型定义
-
typedef int data_t;
-
-
typedef struct
-
{
-
//保存数据元素
-
data_t buf[MAX];
-
//保存当前栈顶位置下标;
-
int top;
-
}seqstack_t;
-
-
-
//常用操作
-
//1.创建空顺序栈
-
seqstack_t *creat_empty_seqstack()
-
{
-
seqstack_t *s = NULL;
-
-
//1.为空栈在堆区分配空间
-
s = (seqstack_t *)malloc(sizeof(seqstack_t));
-
-
//2.元素下标值置为-1,表示栈为空栈
-
s->top = -1;
-
-
//3.返回在堆区分配的首地址
-
return s;
-
}
-
-
-
//2.栈判空
-
int is_empty_seqstack(seqstack_t *s)
-
{
-
//比较s->top 和 -1 的关系
-
return s->top == -1;
-
}
-
-
//3.栈判满
-
int is_full_seqstack(seqstack_t *s)
-
{
-
//比较s->top和MAX -1的关系
-
return s->top == MAX - 1;
-
}
-
-
//4.入栈
-
int push_seqstack(seqstack_t *s,data_t data)
-
{
-
//先移动s->top指针,再插入数据
-
s->top++;
-
s->buf[s->top] = data;
-
-
return 0;
-
}
-
-
//5.出栈
-
data_t pop_seqstack(seqstack_t *s)
-
{
-
data_t data;
-
-
//先移走数据,再移动top
-
data = s->buf[s->top];
-
s->top--;
-
-
return 0;
-
}
-
-
//6.获取栈顶元素
-
data_t get_top_seqstack(seqstack_t *s)
-
{
-
//只返回其栈顶元素,不移动指针s->top
-
return s->buf[s->top];
-
}
-
-
-
int main(int argc, const char *argv[])
-
{
-
int i = 0;
-
seqstack_t *s = NULL;
-
-
s = creat_empty_seqstack();
-
-
while(!is_full_seqstack(s))
-
{
-
push_seqstack(s,i++);
-
printf("%-5d",get_top_seqstack(s));
-
}
-
-
putchar('\n');
-
-
while(!is_empty_seqstack(s))
-
{
-
printf("%-5d",get_top_seqstack(s));
-
pop_seqstack(s);
-
}
-
-
putchar('\n');
-
-
-
return 0;
- }
点击(此处)折叠或打开
-
litong@ltubuntu:~$ ./a.out
-
0 1 2 3 4 5 6 7 8 9
- 9 8 7 6 5 4 3 2 1 0