数据结构与算法——栈的相关操作
来源:互联网 发布:什么是云进销存软件 编辑:程序博客网 时间:2024/05/22 06:30
1、定义栈
typedef struct
{
ElemType *base;
ElemType *top;
int stackSize;
}sqStack;
2、创建一个栈
#define STACK_INIT_SIZE 100
initStack(sqStack *s)
{
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof((ElemType ));
if(!s->base)
exit(0);
s->top = s->base; //最开始,栈顶就是栈底
s->stackSize = STACK_INIT_SIZE; //容量赋值为100
}
3、入栈
#define STACKINCREMENT 10
Push(sqStack *s, ElemType e)
{
if(s->top - s->base >= s->stackSize)
{
s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof((ElemType));
if(!s->base)
exit(0);
s->top = s->base + s->stackSize; //最开始,栈顶就是栈底
s->stackSize = s->stackSize + STACKINCREMENT)
}
*(s->top) = e;
s->top ++;
}
4、出栈
Pop(sqStack *s, ElemType *e)
{
if(s->top == s->base)
return;
*e = *--(s->top);
}
5、清空栈:只是清空,内存依然在
ClearStack((sqStack *s)
{
s->top = s->base;
}
6、销毁栈:连栈所在的内存也销毁
DestoryStack((sqStack *s)
{
int i, len;
len = s->stackSize;;
for(i = 0; i < len; i++)
{
free(s->base);
s->base ++;
}
s->base = s->top = NULL;
s->stackSize = 0;
}
7、计算栈的当前容量
int StackLen(sqStack s)
{
return(s.top - s.base);//将两个地址进行相减
}
typedef struct
{
ElemType *base;
ElemType *top;
int stackSize;
}sqStack;
2、创建一个栈
#define STACK_INIT_SIZE 100
initStack(sqStack *s)
{
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof((ElemType ));
if(!s->base)
exit(0);
s->top = s->base; //最开始,栈顶就是栈底
s->stackSize = STACK_INIT_SIZE; //容量赋值为100
}
3、入栈
#define STACKINCREMENT 10
Push(sqStack *s, ElemType e)
{
if(s->top - s->base >= s->stackSize)
{
s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof((ElemType));
if(!s->base)
exit(0);
s->top = s->base + s->stackSize; //最开始,栈顶就是栈底
s->stackSize = s->stackSize + STACKINCREMENT)
}
*(s->top) = e;
s->top ++;
}
4、出栈
Pop(sqStack *s, ElemType *e)
{
if(s->top == s->base)
return;
*e = *--(s->top);
}
5、清空栈:只是清空,内存依然在
ClearStack((sqStack *s)
{
s->top = s->base;
}
6、销毁栈:连栈所在的内存也销毁
DestoryStack((sqStack *s)
{
int i, len;
len = s->stackSize;;
for(i = 0; i < len; i++)
{
free(s->base);
s->base ++;
}
s->base = s->top = NULL;
s->stackSize = 0;
}
7、计算栈的当前容量
int StackLen(sqStack s)
{
return(s.top - s.base);//将两个地址进行相减
}
0 0
- 数据结构与算法——栈的相关操作
- 数据结构与算法学习之栈及栈的相关操作
- 数据结构与算法——单链表的基本操作
- 数据结构学习(八)——顺序栈的相关操作
- 数据结构与算法简记:二叉查找树相关操作
- 【数据结构与算法】B tree 即相关操作 深入解读
- 数据结构与算法学习之队列及队列的相关操作
- 数据结构与算法学习之二叉树及二叉树的相关操作
- 数据结构与算法学习之二叉排序树及二叉排序树的相关操作
- 数据结构与算法基础——链表相关
- 数据结构 ——单链表操作的算法
- 数据结构 ——队列操作的算法
- 数据结构 ——进出栈操作的算法
- 算法与数据结构-栈的基本操作C语言实现
- 数据结构与算法 链表的操作
- 数据结构操作与运算-CvPoint相关数据结构
- 数据结构实验--栈的相关操作
- 数据结构_栈的相关操作
- android Tools之Hierachy Viewer的使用
- 在ubuntu 查看ip地址 和 DNS (星星笔记)
- java 并发包 CountDownLatch 例子
- 核函数
- LILY英语招聘PHP工程师一名
- 数据结构与算法——栈的相关操作
- 输入k 实现链表每k项都逆序输出
- CString类的完美总结
- 差分 传输曲线
- Asp.Net 操作XML文件的增删改查 利用GridView
- IAR工具使用
- 有感libsvm
- Eclipse调试Java的10个技巧
- Java虚拟机jvm——java虚拟机底层结构详解