究竟栈为何物
栈是一种 线性数据结构 ,用 先进后出 或者是 后进先出 的方式存储数据,栈中数据的插入删除 *** 作都是在栈顶端进行。
栈是一种特殊的列表,栈内的元素只能通过一端进行访问,这一端为栈顶。
Python 如何实现栈
使用内置数据结构 List 可以用来实现栈;
使用 append() 向栈顶添加元素;
使用 pop() 可以以后进先出的顺序删除元素;
Python 实战代码
5.1.1. 把列表当作堆栈使用列表方法使得列表可以很方便的做为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如:
>>>stack = [3, 4, 5]
>>>stack.append(6)
>>>stack.append(7)
>>>stack
[3, 4, 5, 6, 7]
>>>stack.pop()
7
>>>stack
[3, 4, 5, 6]
>>>stack.pop()
6
>>>stack.pop()
5
>>>stack
[3, 4]
// InitStatck 函数:用来初始化栈空间。Status InitStack(SqStack &S)
{
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType))
if(!S.base) return(ERROR)
S.top=S.base
S.stacksize=STACK_INIT_SIZE
return OK
}
//Push函数:将元素压栈
Status Push(SqStack &S,SElemType e)
{
if(S.top-S.base>=S.stacksize) //压栈前判断栈空间是否够用
{ //如果栈空间大小不够,给栈分配更大的空间
S.base=(SElemType*)realloc(S.base, (S.stacksize+STACKINCREMENT)*sizeof(SElemType))
if(!S.base) return(ERROR)
S.top=S.base+S.stacksize
S.stacksize+=STACKINCREMENT //记录当前栈空间的大小
}
*S.top++=e //将要压栈的元素值压入栈的顶部!
return OK
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)