python实现栈
由于python中没有和栈相关的模块,所以需要自己写
下面为栈的类,将其放入到stack.py中
然后再使用到栈的程序中导入即可,导入代码为
from stack import Stack
# -*- coding: utf-8 -*-
class Stack():
def __init__(self, size):
self.size = size
self.stack = []
self.top = -1
def push(self, ele): # 入栈之前检查栈是否已满
if self.isfull():
raise exception("out of range");
else:
self.stack.append(ele);
self.top = self.top + 1;
def pop(self): # 出栈之前检查栈是否为空
if self.isempty():
raise exception("stack is empty");
else:
self.top = self.top - 1;
return self.stack.pop(); #默认删除的最后一个元素,返回的删除值
def isfull(self):
return self.top + 1 == self.size;
def isempty(self):
return self.top == -1;
def num(self):
return self.stack[self.top]
def printf(self):
for i in range(0,self.top+1):
print self.stack[i],
print
由于我所用到的是使用栈进行深度优先遍历图,所以代码如下
while s.top!=-1:
flag=0 #用来标记当前位置是否被修改过
for i in range(1,m):
if (graph[s.num()][i]==1): #如果符合条件
graph[s.num()][i] = 0 # 标记为访问过
s.push(i) #入栈
flag=1
break
else:
continue
if (s.num()==8):
break
if (i==m-1):
if (flag==0):
s.pop()