Esempio n. 1
0
class DFS(Search):
    def __initialize_DFS(self, wanted_node):
        self.__stack = Stack()
        self.visited_nodes = []
        self.wanted_node = wanted_node

    def __is_new_node(self, node):
        return not node in self.visited_nodes and not self.__stack.contains(
            node)

    def __add_children(self, node):
        for node in self.graph.graph[node]:
            if self.__is_new_node(node):
                self.__stack.push(node)

    def __call_recursive_DFS(self, node):
        self.visit(node)
        if self.is_wanted_node(node):
            return
        self.__add_children(node)
        self.__call_recursive_DFS(self.__stack.pop())

    def DFS(self, wanted_node, starting_node=1):
        self.__initialize_DFS(wanted_node)
        if self.has_not_found_exception():
            return
        self.__call_recursive_DFS(starting_node)
        return self.print_path()
Esempio n. 2
0
 def dfs(self,vertex):
     seen = set()
     s = Stack()
     s.push(self.startVertex)
     while not s.empty():
         v = s.pop()
         if vertex == v:
             print("Vertex Found")
             return
         seen.add(v)
         adjList = self.graph[v]
         for w in adjList:
             if w not in seen and not s.contains(w):
                 s.push(w)
     print("Vertex not found")
     return
 def test_contains(self):
     stack = Stack()
     stack.push("Ned")
     self.assertFalse(stack.contains("Bao"))
     self.assertTrue(stack.contains("Ned"))
Esempio n. 4
0
from Stack import Stack
from Queue import Queue

s = Stack()
s.push(1)
s.push(2)
s.push(3)

q = Queue()
q.add(1)
q.add(2)
q.add(3)

print("Stack 'contains' tests: %r, %r, %r, %r" %
      (s.contains(0), s.contains(1), s.contains(2), s.contains(3)))
print("Queue 'contains' tests: %r, %r, %r, %r" %
      (q.contains(0), q.contains(1), q.contains(2), q.contains(3)))

s.pop()
s.pop()
s.pop()
print("Empty stack 'contains' test: %r" % s.contains(4))

q.remove()
q.remove()
q.remove()
print("Empty queue 'contains' test: %r" % q.contains(4))
Esempio n. 5
0
class TestStack(unittest.TestCase):
    def setUp(self):
        self.instance =Stack()

    def testClear(self):
        self.instance.clear()
        self.assertEqual(0,self.instance.size)
        self.assertEqual([],self.instance.Stack)
    
    def testContain(self):
        self.assertFalse(self.instance.contains('string'))
        self.assertFalse(self.instance.contains(''))
        self.assertFalse(self.instance.contains(None))

        self.instance.push("string1")
        self.instance.push("string2")
        self.instance.push("string1")
        self.assertTrue(self.instance.contains("string1"))
    
    def testPeek(self):
        self.assertRaises(StackException,self.instance.peek)
        self.instance.push("string1")
        self.instance.push("string2")
        self.assertEqual("string2",self.instance.peek())
        self.assertEqual(2,self.instance.size)
        self.assertEqual(["string1","string2"],self.instance.Stack)
    
    def testPush(self):        
        self.instance.push("string1")
        self.instance.push("string2")
        self.instance.push("string3")
        self.assertEqual(["string1","string2","string3"],self.instance.Stack)

        self.instance.push("")
        self.instance.push("")
        self.assertEqual(["string1","string2","string3","",""],self.instance.Stack)

        self.instance.push(None)
        self.instance.push("string1")
        self.assertEqual(["string1","string2","string3","","",None,"string1"],self.instance.Stack)

    def testPop(self):
        self.assertRaises(StackException,self.instance.pop)

        self.instance.push("string1")
        self.instance.push("string2")
        popvalue= self.instance.pop()
        self.assertEqual(["string1"],self.instance.Stack)
        self.assertEqual(1,self.instance.size)
        self.assertEqual(popvalue,"string2")

        popvalue= self.instance.pop()
        self.assertEqual([],self.instance.Stack)
        self.assertEqual(0,self.instance.size)
        self.assertEqual(popvalue,"string1")

        self.assertRaises(StackException,self.instance.pop)
    
    def testIsEmpty(self):
        self.assertTrue(self.instance.isEmpty())
        self.instance.push("string1")
        self.assertFalse(self.instance.isEmpty())
        self.instance.pop()
        self.assertTrue(self.instance.isEmpty())