栈和队列的数据结构和操作,比较简单,这里做一个简单的总结和实现。

#栈
满足后进先出(last in first out,LIFO),在Python中可以用数组在模拟栈的操作。

##实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Stack(object):
def __init__(self): #建栈
self.stack=[]

def isEmpty(self): #判空
return self.stack==[]

def push(self,item): #压栈
self.stack.append(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)

#队列
满足先进先出(first in first out,FIFO)队列的基本操作是Enqueue(入队),在表的末端(rear)插入一个元素,还有出列(Dequeue),删除表开头的元素。其实现也比较容易,同样可以用数组模拟。

##实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Queue(object):
def __init__(self):
self.queue=[]

def isEmpty(self):
return self.queue==[]

def enqueue(self,x): #入队
self.queue.append(x)

def dequeue(self): #出队
if self.queue:
a=self.queue[0]
self.queue.remove(a)
return a
else:
raise IndexError,'queue is empty'

def size(self):
return len(self.queue)