链表
思维导图
链栈
概念
栈的概念:由一系列节点组成,每个节点包含两个部分:数据域用于存储数据,以及指针域指向下一个节点。链表的特点是没有固定的大小,可以动态地添加或删除元素,
链栈:链栈即链式存储的栈**
栈的特点: 先进后出(filo),后进先出(lifo)
栈的操作
创建
首先创建链的节点类,节点拥有两个属性,值和后继
class Note:
def __init__(self,data):
self.data=data
self.next=None
然后创建链表的类,其中一个属性,头节点
class LinkList:
def __init__(self,note=None):
self.head = note
判断栈空
函数功能:判断栈是否为空
函数返回值:bool值
函数名:is_empyt
参数列表:链栈
def is_empty(self):
return self.head is None
链栈的入栈
函数功能:将值输入栈
函数返回值:无
函数名:insert_head
参数列表:链栈,插入的数据
def insert_head(self,data):
new_node = Note(data)
new_node.next = self.head
self.head = new_node
链栈的出栈
函数功能:将栈最后一个输入的值删除并输出
函数返回值:栈最后一个输入的值
函数名:del_head
参数列表:链栈
def del_head(self):
result = self.head.data
if self.head:
self.head=self.head.next
return result
else:
raise BaseException("empty list")
遍历栈
函数功能:遍历栈并将其输出
函数返回值:无
函数名:print_lis
参数列表:链栈
def print_lis(self):
p=self.head
while p:
print(p.data,end=" ")
p=p.next
输出栈的大小
函数功能:输出栈的长度
函数返回值:栈的长度
函数名:length
参数列表:链栈
def length(self):
count = 0
p=self.head
while p:
count += 1
p = p.next
return count
全部代码
class Note:
def __init__(self,data):
self.data=data
self.next=None
class LinkList:
def __init__(self,note=None):
self.head = note
def insert_head(self,data):
new_node = Note(data)
new_node.next = self.head
self.head = new_node
def is_empty(self):
return self.head is None
def del_head(self):
result = self.head.data
if self.head:
self.head=self.head.next
return result
else:
raise BaseException("empty list")
def length(self):
count = 0
p=self.head
while p:
count += 1
p = p.next
return count
def print_lis(self):
p=self.head
while p:
print(p.data,end=" ")
p=p.next
print()
lin_list=LinkList()
lin_list.insert_head(1)
lin_list.insert_head(2)
lin_list.insert_head(3)
lin_list.insert_head(4)
lin_list.insert_head(5)
lin_list.print_lis()
print(lin_list.length())
print(lin_list.del_head())
lin_list.print_lis()
标签:head,python,self,list,链栈,data,def
From: https://blog.csdn.net/qq_62780060/article/details/144036103