「DA:dfsbfs」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「= スタックを用いた深さ優先探索 = ##### スタック操作のための関数群 ##### def isEmpty(): if cur == 0: print('スタックは空です!') return True return False def push(x): global cur if cur == len(stack): print('これ以上要素を追加できません!') return stack[cur] = x cur += 1 def pop(): global cur if isEmpty(): return cur -=…」) |
|||
| 26行目: | 26行目: | ||
print(stack[:cur]) | print(stack[:cur]) | ||
# テストコード | ##### テストコード ##### | ||
V = [[] for i in range(7)] | V = [[] for i in range(7)] | ||
V[0] = [1, 2] | V[0] = [1, 2] | ||
2025年4月23日 (水) 01:55時点における版
スタックを用いた深さ優先探索
##### スタック操作のための関数群 #####
def isEmpty():
if cur == 0:
print('スタックは空です!')
return True
return False
def push(x):
global cur
if cur == len(stack):
print('これ以上要素を追加できません!')
return
stack[cur] = x
cur += 1
def pop():
global cur
if isEmpty():
return
cur -= 1
return stack[cur]
def show():
print(stack[:cur])
##### テストコード #####
V = [[] for i in range(7)]
V[0] = [1, 2]
V[1] = [3, 4]
V[2] = [5, 6]
# スタック(訪問先リスト)の初期化
stack = [0 for i in range(10)]
cur = 0
# 訪問済リストvisitedの初期化
visited = []
# 最初の訪問先は0
push(0)
while not isEmpty():
a = pop()
visited.append(a)
for i in reversed(V[a]):
push(i)
print(visited)