Stack & Queue
20107 ワード
Arrayは、JavaScriptやPythonではなく、すべてのプログラミング言語で最も多く使われているデータ構造です.アレイには、次の機能があります. は、データを順次格納する. indexで配列の値に近いため、速度が速い. したがって、は、相関および連続データの処理において配列 を用いる.したがって、データ構造は問題解決の中心である. 今日はアレイに密接に関連するStackとQueueを学びに来ました. > Stack
が最近蓄積したデータを処理する.
このプロパティは、コンピュータの世界でスタックをどのように使用しますか?いくつかの例を見てみましょう.開発者の最大コミュニティスタックOverFlow ブラウザのHistory 端末 .
関数は、呼スタック を実行する.
> Queue
で最初に入力されたデータは、まず処理される. プリンタスケジューラ JavaScript非同期処理(ex.DOMイベント、settimeout、HTTP通信用fetch関数など)
> Stack
LIFO (Last In First Out)
最後に入力したデータが最初に出ます.
スタックという資料の構造は実は私たちの生活と非常に密接です.上図のように、美味しいアイスクリームのグリルに積まれたものも積み重ねられていて、読む本も積み重ねられています.
S.coup~読む本もデータじゃないの?私たちはデータと一緒に生活しています.
Q.スタックの特徴は?
まず、
コンピュータ世界のスタック
このプロパティは、コンピュータの世界でスタックをどのように使用しますか?いくつかの例を見てみましょう.
cd
(ディレクトリの変更)、pwd
(現在のパスを理解)コマンド> Queue
FIFO (First In First Out)
初めて入力したデータが一番先に出ます.
Qこの資料の構造も私たちの日常生活から離れられない.上の写真だけ見ればわかるでしょ?
私たちはスーパーで野菜を買ったり、バスを待ったり、遊園地に並んだりして、並んでいるデータです.Q公平一番先に並んだ人が一番先にレジを通って、バスに乗って、アトラクションに乗ったからです.
Q.ではQの特徴は?
コンピュータ世界のキュー
スタック実装例
#stack.py**
```python
class Stack:
def __init__(self):
self.state = []
def push(self, data):
# 데이터를 스택에 push 하는 것을 구현 해 주세요
return self.state.append(data)
def pop(self):
# 데이터를 스택에서 pop 해서 그 값을 리턴하도록 구현 해 주세요
value = self.state.pop()
if value is not None:
return value
else:
print('Stack is empty.')
def getPeak(self):
# 스택의 최상위 값을 리턴하도록 구현 해 주세요
if self.state:
return self.state[-1]
else:
print('Stack is empty.')
def isEmpty(self):
# 데이터가 stack에 있는지 유무 파악
return not bool(self.state)
def size(self):
# stack에 몇개의 값이 있는지 확인
return len(self.state)
def __repr__(self):
return repr(self.state)
if __name__ == '__main__':
stack = Stack()
print('스택이 비었나요?: {}'.format(stack.isEmpty()))
print('스택에 숫자 0-9를 추가합니다.')
for i in range(10):
stack.push(i)
print('스택 크기 : {0}'.format(stack.size()))
print('size: {}'.format(stack.size()))
print('getPeak: {}'.format(stack.getPeak()))
print('pop: {}'.format(stack.pop()))
print('getPeak: {}'.format(stack.getPeak()))
print('Empty??? {}'.format(stack.isEmpty()))
print(stack)
스택이 비었나요?: True
스택에 숫자 0-9를 추가합니다.
스택 크기 : 10
size: 10
getPeak: 9
pop: 9
getPeak: 8
Empty??? False
[0, 1, 2, 3, 4, 5, 6, 7, 8]
キューの実装例
class Queue:
def __init__(self):
self.state = []
def enqueue(self, data):
# queue 뒤쪽에 항목을 삽입합니다.
self.state.insert(0, data)
def dequeue(self):
# Queue앞 쪽의 항목을 반환하고, 제거
value = self.state.pop()
if value is not None:
return value
else:
print('Queue is empty.')
def getPeak(self):
# 스택의 최상위 값을 리턴하도록 구현 해 주세요
if self.state:
return self.state[-1]
else:
print('Stack is empty.')
def isEmpty(self):
# 데이터가 stack에 있는지 유무 파악
return not bool(self.state)
def size(self):
# stack에 몇개의 값이 있는지 확인
return len(self.state)
def __repr__(self):
return repr(self.state)
if __name__ == '__main__':
queue = Queue()
print('스택이 비었나요?: {}'.format(queue.isEmpty()))
print('스택에 숫자 0-9를 추가합니다.')
for i in range(10):
queue.enqueue(i)
print('스택 크기 : {0}'.format(queue.size()))
print('size: {}'.format(queue.size()))
print('getPeak: {}'.format(queue.getPeak()))
print('pop: {}'.format(queue.dequeue()))
print('getPeak: {}'.format(queue.getPeak()))
print('Empty??? {}'.format(queue.isEmpty()))
print(queue)
Queue 비었나요?: True
Queue 숫자 0-9를 추가합니다.
Queue크기 : 10
size: 10
getPeak: 0
pop: 0
getPeak: 1
Empty??? False
[9, 8, 7, 6, 5, 4, 3, 2, 1]
Reference
この問題について(Stack & Queue), 我々は、より多くの情報をここで見つけました https://velog.io/@hyeseong-dev/Stack-Queueテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol