基本概念
1.棧(stacks)是一種只能通過(guò)訪(fǎng)問(wèn)其一端來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)與檢索的線(xiàn)性數(shù)據(jù)結(jié)構(gòu),具有后進(jìn)先出(last in first out,LIFO)的特征
2.隊(duì)列(queue)是一種具有先進(jìn)先出特征的線(xiàn)性數(shù)據(jù)結(jié)構(gòu),元素的增加只能在一端進(jìn)行,元素的刪除只能在另一端進(jìn)行。能夠增加元素的隊(duì)列一端稱(chēng)為隊(duì)尾,可以刪除元素的隊(duì)列一端則稱(chēng)為隊(duì)首。
實(shí)現(xiàn)
Stack的實(shí)現(xiàn)
```
class stack():
def __init__(self):
self.stack = []
def empty(self):
return self.stack==[]
def push(self,data):
self.stack.append(data)
def pop(self):
if self.empty():
return None;
else:
return self.stack.pop(-1)
def top(self):
if self.empty():
return None
else:
return self.stack[-1]
def length(self):
return len(self.stack)
```
隊(duì)列的實(shí)現(xiàn)
```
class queue():
def __init__(self):
self.queue = []
def empty(self):
return self.queue == []
def enqueue(self,data):
self.queue.append(data)
def dequeue(self):
if self.empty():
return None
else:
return self.queue.pop(0)
def head(self):
if self.empty():
return None
else:
return self.queue[0]
def length(self):
return len(self.queue)
```