读书笔记之数据结构栈与队列

1.栈-先进后出LIFO

出栈 poping,入栈pushing

栈的5个方法:is_empty,push(向栈的顶部添加一个元素),pop(从顶部移除一个元素),peek(返回顶部的元素,但不会移除),size(返回一个表示栈中元素数量的整型数)

2.代码举例如下:

class Stack:
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):
last=len(self.items)-1
return self.items[last]

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

stack=Stack() #新创建的栈是空的,,is_empty方法将返回True
print(stack.is_empty())
#向栈中添加新元素,is_empty返回的则是False
stack1=Stack()
stack1.push(1)
print(stack1.is_empty())
#调用pop方法从栈中移除一个元素,is_empty方法 的返回值为True
stack3=Stack()
stack3.push(1)
item=stack3.pop()
print(item)
print(stack3.is_empty())
#查看栈的内容并打印其大小
stack4=Stack()

for i in range(0,6):
stack4.push(i)

print(stack4.peek())
print(stack4.size())



3.运行结果如下:

 4.使用栈逆转字符串:

首先将“Hello"中的每个字符串放入栈中,然后遍历创建的栈,取出栈中的元素并放入遍历reverse,遍历完成后,原来的单词就逆序完成了。

class Stack:
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):
last=len(self.items)-1
return self.items[last]

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

stack=Stack()
for c in "Hello":
stack.push(c)

reverse = " "

for i in range(len(stack.items)):
reverse+=stack.pop()

print(reverse)



运行结果就是把Hello变成了 olleH
5.队列-先进先出 FIFO
编写拥有4个方法的队列:enquee(向队列中添加一个新元素),dequeue(从队列中移除一个元素),is_empty,size(返回队列中元素的数量)

扫描二维码关注公众号,回复: 11287395 查看本文章
class Queue:
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)

a_queue=Queue()
print(a_queue.is_empty())

b_queue=Queue()
for i in range(5):
b_queue.enqueue(i)

print(b_queue.size())
#依次移除队列中的元素
c_queue=Queue()

for i in range(5):
c_queue.enqueue(i)

for i in range(5):
print(c_queue.dequeue())

print()
print(c_queue.size())

运行结果

 6. 练习

 

7 答案

1.

class Stack:
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)

stack = Stack()
for c in "yesterday":
stack.push(c)


reversed_string = ""


for i in range(len(stack.items)):
reversed_string += stack.pop()


print(reversed_string)
2.
class Stack:
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)

list1 = [1, 2, 3, 4, 5]
list2 = []

stack = Stack()
for item in list1:
stack.push(item)


for i in range(len(stack.items)):
list2.append(stack.pop())

print(list2)


猜你喜欢

转载自www.cnblogs.com/JacquelineQA/p/12977460.html