python实现栈并进行深度优先遍历图

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/code_AC/article/details/80279784

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()

没有更多推荐了,返回首页