資料結構 Python實現

2022-07-08 12:03:15 字數 2263 閱讀 4857

參考部落格:**演算法和資料結構: 一 棧和佇列

python資料結構——棧、佇列的實現(一)

python資料結構——棧、佇列的實現(二)

python資料結構——鍊錶的實現

資料結構

定義:簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如:列表、集合與字典等都是一種資料結構。

ps:「程式=資料結構+演算法」

列表:在其他程式語言中稱為「陣列」,是一種基本的資料結構型別。

關於:列表的儲存問題!

棧:棧(stack)是乙個資料集合,可以理解為只能在一端進行插入或刪除操作的列表。

棧的特點:後進先出(last-in, first-out)

棧的概念:

棧頂棧底

棧的基本操作:

進棧(壓棧):push

出棧:pop

取棧頂:gettop

利用python簡單實現棧操作

class stack(object):

def __init__(self):

self.stack=

def isempty(self):

return self.stack==

def push(self,item):

def pop(self):

if self.isempty():

raise indexerror,'pop from empty stack'

return self.stack.pop()

def peek(self):

return self.stack[-1]

def size(self):

return len(self.stack)

棧的應用——括號匹配問題

括號匹配問題:給乙個字串,其中包含小括號、中括號、大括號,求該字串中的括號是否匹配。

例如:()(){} 匹配

() 匹配

( 不匹配

[(]) 不匹配

def kuohaopipei(exp=""):

stack =

for i in exp:

if i in :

if i == ')':

if len(stack)>0 and stack[-1] == '(':

stack.pop()

else:

return false

if i == ']':

if len(stack)>0 and stack[-1] == '[':

stack.pop()

else:

return false

if i == '}':

if len(stack)>0 and stack[-1] == '))]}"))

佇列佇列(queue)是乙個資料集合,僅允許在列表的一端進行插入,另一端進行刪除。

進行插入的一端稱為隊尾(rear),插入動作稱為進隊或入隊

進行刪除的一端稱為隊頭(front),刪除動作稱為出隊

佇列的性質:先進先出(first-in, first-out)

雙向佇列:佇列的兩端都允許進行進隊和出隊操作。

佇列的實現原理

普通佇列:

初步設想:列表+兩個下標指標

建立乙個列表和兩個變數,front變數指向隊首,rear變數指向隊尾。初始時,front和rear都為0。

進隊操作:元素寫到li[rear]的位置,rear自增1。

出隊操作:返回li[front]的元素,front自減1。

環形佇列:

改進方案:將列表首尾邏輯上連線起來。

環形佇列:當隊尾指標front == maxsize + 1時,再前進乙個位置就自動到0。

實現方式:求餘數運算

隊首指標前進1:front = (front + 1) % maxsize

隊尾指標前進1:rear = (rear + 1) % maxsize

隊空條件:rear == front

隊滿條件:(rear + 1) % maxsize == front

資料結構 Python實現

參考部落格 演算法和資料結構 一 棧和佇列 python資料結構 棧 佇列的實現 一 python資料結構 棧 佇列的實現 二 python資料結構 鍊錶的實現 資料結構 定義 簡單來說,資料結構就是設計資料以何種方式組織並儲存在計算機中。比如 列表 集合與字典等都是一種資料結構。ps 程式 資料結...

Python實現Map資料結構

class hashtable def init self 初始化兩個list,乙個用來儲存鍵值,乙個用來儲存值 self.size 11 self.slots none self.size self.data none self.size 定義hash函式,使用餘數法 def hashfuncti...

資料結構 佇列(Python實現)

佇列的操作及實現 先進先出 佇列操作 佇列內容 返回值is empty true insert 2 insert 5 insert 8 2,52,5,8 pop 5,82 size 5,82 順序佇列 1 初始化 def init self self.que 2 判斷是否為空 def is empt...