LoginSignup
6
1

More than 5 years have passed since last update.

pythonでStackとQueueを実装してみた

Last updated at Posted at 2017-11-20

こんにちはsoheiです:grin:
今回は次回学習しようと思っている幅優先探索と深さ優先探索で使うStackとQueueを実装してみたいと思います。

実装

・Stack

sohei.py
class Stack:
    def __init__(self,data = []):
        self.data = data
    def push(self,x):
        self.data.append(x)
        return self.data
    def pop(self):
        if len(self.data) == 0:
            return "Stack is Empty!"
        else:
            cell = self.data.pop()
            return self.data

・Queue

sohei.py
class Queue:
    def __init__(self,data = []):
        self.data = data
    def enqueue(self,x):
        self.data.append(x)
        return self.data
    def dequeue(self):
        if len(self.data) == 0:
            return "Queue is Empty!"
        else:
            cell = self.data[0]
            del self.data[0]
            return self.data

では実際にタスクを実行してもらいたいと思います。

sohei.py
#Stack
Test_S = Stack()
print Test_S.push("task1")
print Test_S.push("task2")
print Test_S.push("task3")
print Test_S.pop()
print Test_S.pop()
#Queue
Test_Q = Queue()
print Test_Q.enqueue("task1")
print Test_Q.enqueue("task2")
print Test_Q.enqueue("task3")
print Test_Q.dequeue()
print Test_Q.dequeue()
#実行結果
['task1']
['task1', 'task2']
['task1', 'task2', 'task3']
['task1', 'task2']
['task1']
['task1']
['task1', 'task2']
['task1', 'task2', 'task3']
['task2', 'task3']
['task3']

ちゃんと作動してくれました:laughing:

学んだ知識

・Stack,Queueという概念について
・幅優先、深さ優先について
・Classについて

考察

今回の学習で気づいたことがあります。
それは、StackやQueueの考え方は日常でよく使われているということです。
例えば、文房具屋のノートの陳列です。ノートがなくなったら店員さんは奥の方からノートを置いていきお客さんは手前からノートをとりますよね。あれはStackが使われていると思います。
また、美味しいラーメン屋の行列は、先に並んだ人からラーメンを食べられますよね。
あれはQueueが使われていると思います。
また、幅優先探索や深さ優先探索に使われたりと、奥が深くいろいろなものに応用できるということも感じました。

今回はここら辺で失礼します。
次回は幅優先と深さ優先を学びたいと思います。

6
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1