栈
一张图可以简单的说明
为了达到时间复杂度最低:选择的是python列表实现栈,而列表是顺序表
入栈push的时候选择在列表的尾部进行添加元素,出栈在列表尾部弹出
class Stack(object):"""栈"""def __init__(self):self.items = []def is_empty(self):"""判断是否为空"""return self.items == []def push(self, item):"""加入元素"""self.items.append(item)def pop(self):"""弹出元素"""return self.items.pop()def peek(self):"""返回栈顶元素"""return self.items[len(self.items)-1]def size(self):"""返回栈的大小"""return len(self.items)if __name__ == "__main__":stack = Stack()stack.push("hello")stack.push("world")stack.push("itcast")print stack.size()print stack.peek()print stack.pop()print stack.pop()print stack.pop()
队列
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(顺序表,链表均可)。
为了达到时间复杂度最低:选择的是python列表实现栈,而列表是顺序表
如果选择在头部进行添加是O(n),尾部进行弹出是O(1) ---->实际情况:对队列进行弹出比较多
如果选择在尾部进行添加时O(1),头部进行弹出是O(n) —>实际情况:对队列进行添加比较多
class Queue(object):"""队列"""def __init__(self):self.items = []def is_empty(self):return self.items == []def enqueue(self, item):"""进队列"""self.items.insert(0,item)def dequeue(self):"""出队列"""return self.items.pop()def size(self):"""返回大小"""return len(self.items)if __name__ == "__main__":q = Queue()q.enqueue("hello")q.enqueue("world")q.enqueue("itcast")print q.size()print q.dequeue()print q.dequeue()print q.dequeue()