数据结构与算法——栈的相关操作
2014-09-27 11:27
459 查看
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);//将两个地址进行相减
}
相关文章推荐
- 【数据结构与算法】HashTable相关操作实现(附完整源码)
- 【数据结构与算法】B tree 即相关操作 深入解读
- 数据结构与算法学习之二叉树及二叉树的相关操作
- 数据结构与算法学习之队列及队列的相关操作
- 【数据结构与算法】HashTable相关操作实现(附完整源码)
- 数据结构算法复习[栈操作相关]
- 数据结构-单链队列相关操作算法
- 十四、数据结构相关算法
- 数据结构实验一--单链表的基本操作的算法
- 数据结构及算法相关文章索引(持续更新)
- 数据结构-顺序表相关操作
- 算法学习-数据结构之链表操作,创建,插入,删除,查找。
- 数据结构——算法之(010)( 字符串的左旋转操作)
- 数据结构之链表基本操作算法演示
- 温习数据结构之图的邻接矩阵的相关操作2011.10.22
- 线性表的相关操作 数据结构实验报告第二个
- 数据结构_顺序表相关操作C语言源代码
- 数据结构与算法-链表的基本操作---ShinPans
- 【数据结构】——顺序循环队列的相关操作
- 数据结构5:线性表的链式表示和相关的12个操作