说明:后面的无序表和有序表都采用了链表来实现,所以主要学习程序是怎么使用类来实现指向下一个节点的,这个对于后面的二叉树等是基础,一定要学会。
1、 线性结构的概念
2、栈
2.1 栈的概念
2.2 python实现栈
我们看看实现的代码:
class Stack: # 定义栈的类
def __init__(self):
self.items = []
def isEmpty(self): # 判断栈是否为空,为空则返回True
return self.items == []
def push(self, item): # 入栈,用list的append()方法实现
self.items.append(item)
def pop(self): # 出栈,用list的pop()方法
return self.items.pop()
def peek(self): # 返回栈顶元素
return self.items[len(self.items)-1]
def size(self): # 返回栈的大小
return len(self.items)
if __name__ == "__main__":
s = Stack() # 定义一个栈,下面的代码都是测试我们前面定义的栈
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())
运行结果:
2.3 栈的应用
2.3.1 应用一:简单括号匹配
python代码实现:
class Stack: # 自己定义的栈,其实不用这么麻烦,可以直接使用list当栈使用,这里为了加深理解就写的
def __init__(self):
self.items = []
def isEmpty(self): # 判断栈是否为空,为空则返回True
return self.items == []
def push(self, item): # 入栈,用list的append()方法实现
self.items.append(item)
def pop(self): # 出栈,用list的pop()方法
return self.items.pop()
def peek(self): # 返回栈顶元素
return self.items[len(self.items)-1]
def size(self): # 返回栈的大小
return len(self.items)
def parChecker(symbolString):
s = Stack() # 定义一个栈
balanced = True # 定义的标记
index = 0 # 下标
while index < len( symbolString) and balanced:
symbol = symbolString[index]
if symbol == "(": # 左括号入栈
s. push( symbol)
else:
if s. isEmpty():
balanced = False