# # 单向链表
# class Node(object):
# def __init__(self, elem):
# self.elem = elem
# self.next = None
#
# class SingleLink(object):
# def __init__(self, node=None):
# self.__node = node
#
# def is_empty(self):
# # 链表是否为空
# return self.__node == None
#
# def length(self):
# # 链表长度
# # cur游标,用来移动遍历节点
# cur = self.__node
# count = 0
# while cur != None:
# count += 1
# cur = cur.next
# return count
#
# def travel(self):
# # 遍历整个链表
# cur = self.__node
# while cur != None:
# # cur从一开始就是赋予的头结点,而节点本身是有数据区和指针区的
# print(cur.elem)
# cur = cur.next
#
# def add(self, item):
# # 链表头部添加元素
# node = Node(item)
# node.next = self.__node
# self.__node = node
#
# def append(self, item):
# # 链表尾部添加元素
# node = Node(item)
# cur = self.__node
# if self.is_empty():
# self.__node = node
# else:
# while cur.next != None:
# cur = cur.next
# cur.next = node
#
# def insert(self, pos, item):
# # 指定位置添加元素
# if pos <= 0:
# self.add(item)
# elif pos > (self.length() - 1):
# self.append(item)
# else:
# pre = self.__node
# count = 0
# while count < (pos - 1):
# count += 1
# pre = pre.next
# # 当循环退出时,pre指向pos-1
# node = Node(item)
# node.next = pre.next
# pre.next = node
#
# def remove(self, item):
# # 删除节点
# pass
#
# def search(self, item):
# # 查找节点是否存在
# cur = self.__node
# while cur != None:
# if item == cur.elem:
# return True
# else:
# cur = cur.next
# return False
#
# # node = Node(100)
# # single_obj = SingleLink()
# # single_obj.travel()
#
# if __name__ == '__main__':
# ll = SingleLink()
# print(ll.is_empty())
# print(ll.length())
#
# ll.append(1)
# print(ll.is_empty())
# print(ll.length())
#
# ll.append(2)
# ll.add(8)
# ll.append(3)
# ll.travel()
#
# ll.insert(-1, 9)
# ll.insert(3, 100)
class Node(object):
"""节点"""
def __init__(self, elem):
self.elem = elem
self.next = None
class SingleLinkList(object):
"""单链表"""
def __init__(self, node=None):
self.__head = node
def is_empty(self):
"""链表是否为空"""
return self.__head == None
def length(self):
"""链表长度"""
# cur游标,用来移动遍历节点
cur = self.__head
# count记录数量
count = 0
while cur != None:
count += 1
cur = cur.next
return count
def travel(self):
"""遍历整个链表"""
cur = self.__head
while cur != None:
print(cur.elem, end=" ")
cur = cur.next
print("")
def add(self, item):
"""链表头部添加元素,头插法"""
node = Node(item)
node.next = self.__head
self.__head = node
def append(self, item):
"""链表尾部添加元素, 尾插法"""
node = Node(item)
if self.is_empty():
self.__head = node
else:
cur = self.__head
while cur.next != None:
cur = cur.next
cur.next = node
def insert(self, pos, item):
"""指定位置添加元素
:param pos 从0开始
"""
if pos <= 0:
self.add(item)
elif pos > (self.length() - 1):
self.append(item)
else:
pre = self.__head
count = 0
while count < (pos - 1):
count += 1
pre = pre.next
# 当循环退出后,pre指向pos-1位置
node = Node(item)
node.next = pre.next
pre.next = node
def remove(self, item):
"""删除节点"""
cur = self.__head
pre = None
while cur != None:
if cur.elem == item:
# 先判断此结点是否是头节点
# 头节点
if cur == self.__head:
self.__head = cur.next
else:
pre.next = cur.next
break
# print('死循环??????????????') 不加break这里形成了一个死循环,不知道为什么?
# 因为cur = cur.next这一步没执行,始终还是在判断游标与原来元素一致的这种条件
else:
pre = cur
cur = cur.next
def search(self, item):
"""查找节点是否存在"""
cur = self.__head
while cur != None:
if cur.elem == item:
return True
else:
cur = cur.next
return False
if __name__ == "__main__":
ll = SingleLinkList()
print(ll.is_empty())
print(ll.length())
ll.append(1)
print(ll.is_empty())
print(ll.length())
ll.append(2)
ll.add(8)
ll.append(3)
ll.append(4)
ll.append(5)
ll.append(6)
# 8 1 2 3 4 5 6
ll.insert(-1, 9) # 9 8 1 23456
ll.travel()
ll.insert(3, 100) # 9 8 1 100 2 3456
ll.travel()
ll.insert(10, 200) # 9 8 1 100 23456 200
ll.travel()
ll.remove(100)
ll.travel()
ll.remove(9)
ll.travel()
ll.remove(200)
ll.travel()
没有合适的资源?快使用搜索试试~ 我知道了~
python-链表.zip
共6个文件
py:3个
链表:1个
双向链表:1个
需积分: 5 0 下载量 36 浏览量
2024-01-04
16:22:12
上传
评论
收藏 6KB ZIP 举报
温馨提示
Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。它是由荷兰人吉多·罗萨姆于1989年发布的,第一个公开发行版发行于1991年。Python注重解决问题的方法,而不是语法和结构。它被广泛应用于各个领域,包括Web开发、数据分析、人工智能、科学计算等。 Python的优点包括: 简单易学:Python的语法简洁明了,易于理解和学习。 高级特性:Python支持面向对象编程、函数式编程等高级特性,使得代码更加模块化和可重用。 广泛的库和框架:Python拥有丰富的第三方库和框架,可以快速开发各种应用。 跨平台性:Python可以在多个操作系统上运行,包括Windows、Linux和MacOS等。 强大的社区支持:Python拥有庞大的开发者社区,提供了丰富的文档、教程和解决方案。 Python的应用范围广泛,包括但不限于: Web开发:Python的Web框架(如Django和Flask)可以用于构建高效的Web应用程序。 数据分析和科学计算:Python的数据分析库(如NumPy和Pandas)和科学计算库(如SciPy)可以用于处理和分析大量数据。 人工智能
资源推荐
资源详情
资源评论
收起资源包目录
链表.zip (6个子文件)
链表
双向链表.py 3KB
链表 2KB
双向链表 704B
链表.py 6KB
单向循环链表 151B
单向循环链表.py 4KB
共 6 条
- 1
资源评论
rgb2gray
- 粉丝: 2w+
- 资源: 146
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功