データ構造_python_スタック
1.スタック(stack)、出入りあり、順序構造とチェーンテーブル構造がある.操作に進歩があり,線形構造の関係を形成した.(1)メモリに格納されている位置は、ポインタの指向によって接続されたブロックであってもよいチェーンテーブル構造.メモリは柔軟に運用できますが、アルゴリズムは複雑です.(2)シーケンス構造は,配列で実現されるので比較的簡単であるが,配列サイズは事前に計画されており,メモリを大きく浪費し,小さくては不十分である.
2.スタックの動作は常にスタックトップで行われ、それぞれ圧入(push)、ポップアップ(pop)操作を用いてデータの書き込みと読み取りが行われる.
3.行列をスタックにたとえると、チェーンテーブルの構造は銀行の番号取り行列で、順番の構造は食堂の食事窓口が並んでいる.隊尾は桟の頂上で、隊尾のあの人は行って弾いて、隊尾はまた一人が来て押し込んで、それではあの人は新しい桟の頂上です.
4.実装(1)用配列実装:配列実装スタック(2)用チェーンテーブル実装:
2.スタックの動作は常にスタックトップで行われ、それぞれ圧入(push)、ポップアップ(pop)操作を用いてデータの書き込みと読み取りが行われる.
3.行列をスタックにたとえると、チェーンテーブルの構造は銀行の番号取り行列で、順番の構造は食堂の食事窓口が並んでいる.隊尾は桟の頂上で、隊尾のあの人は行って弾いて、隊尾はまた一人が来て押し込んで、それではあの人は新しい桟の頂上です.
4.実装(1)用配列実装:配列実装スタック(2)用チェーンテーブル実装:
import numpy as np
class Node():
def __init__(self):
self.data=0#
self.next=None#
top=None
def is_empty():
if top==None:
return True
else:
return False
def push(data):
global top
new_data=Node()
new_data.data=data
# print("t0",top)
new_data.next=top# new_data , new_data.next
# print("t1",top)
top=new_data# top
# print("t3",top)
#
for i in range(10):
# print(i)
# print()
push(np.random.randint(1,10))
def show_element():
global top
temp_list=[]
while top!=None:
ptr = top
temp = ptr.data
temp_list.append(temp)
top = top.next
print(temp_list)
temp_list.reverse()
for data in temp_list:
push(data)
def pop():
global top
if is_empty():
print(" , ")
else:
ptr=top
temp=ptr.data
top=top.next
print(temp)
operate=4
while operate!=0:
print(" 1, 2, 3, 0")
operate=int(input(" :"))
if operate==1:
data=int(input(" :"))
push(data)
elif operate==2:
pop()
elif operate==3:
show_element()