链表的基本操作
class Node: # 节点类
"""
创建节点信息
"""
def __init__(self, data):
self.data = data
self.next = None
"""
创建单链表
创建单链表 进行操作
初始单链表
1. 判断单链表是否为空
如果头节点的指针为空, 则表示为空链表
二. 插入元素的操作 【头插法、尾插法】
1. 插入节点首先开辟空间 生成节点
2. 修改指针
"""
class SingleLinklist:
def __init__(self):
self._head = None
def is_empty(self):
if self._head == None:
return 1
else:
return 0
def addhead(self, data):
node = Node(data)
"""
把下一个头节点的指针给next
再把Node 的 指针给 head
"""
node.next = self._head
self._head = node
"""
打印输出
"""
def printdata(self):
p = self._head
while p != None:
print(p.data, end=" ")
p = p.next
print('\n ')
"""
判断节点是否存在 求表长
"""
def length(self):
p = self._head
count = 0
while p != None:
count = count + 1
p = p.next
return count
"""
查找元素
查找元素的时间
一直这样找 找到返回True
没有找到 则返回 False
"""
def serachdata(self, data):
p = self._head
while p != None:
if p.data == data:
return True
p = p.next
"""
INSERT在某一位置插入与元素
1. 如果在第0个位置插入,选用头插法插入,
2. 插入元素大于1 的情况
"""
def insertdata(self, pos, data):
""" 在第0 个节点进行元素的插入
不等于空 开始计数
"""
if pos == 0:
self.addhead(data)
return True
p = self._head
count = 0
"""
在查找的过程中
1.1如果p != 0
1.2 如果计数大于 插入位置
2.1 如果插入的位置不合法
p 表示 插入节点的 前一个节点
"""
while p != None:
count += 1
if count >= pos:
node = Node(data)
node.next = p.next
p.next = node
return True
else:
p = p.next
if p == None:
""" 插入位置是不合法的 """
return False
"""
一. 删除头节点的情况
二. 删除 进行文件的删除操作
"""
def removedata(self, data): # 删除
p = self._head
if p.data == data:
self._head = p.next
else:
pre = p
p = p.next
while p != None:
if p.data == data:
pre.next = p.next
return True
else:
pre = p
p = p.next
if p == None:
return False
"""
求最大值
"""
def searchmaxdata(self):
p = self._head
flag = p.data # flag = p
p = p.next
while p != None:
if p.data > flag:
flag = p.data
p = p.next
s1 = SingleLinklist()
num = int(input('请输入追加的元素的个数:'))
for i in range(num):
data = int(input("请输入追加的元素值: "))
s1.addhead(data)
s1.printdata()
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77029.html