python实现单链表中常见功能

本文介绍了一个单链表类的实现及其方法,包括创建、查询、修改等操作,并通过实例演示了如何使用这些方法来管理链表数据。

单链表实现code
##############################简要#################################

序号方法描述
0ll = LinkList(seq)创建一个单链表对象
1LinkList.size_()链表中当前元素的个数
2LinkList.is_empty()判断链表是否为空
3LinkList.clear()将链表清空
4LinkList.append(obj)在链表末尾添加一个新的对象
5LinkList.count(obj)统计某个元素在链表中出现的次数
6LinkList.extend(seq)在链表末尾一次性追加另一个序列中的多个值(用新链表扩展原来的链表)
7LinkList.index(obj)从链表中找出某个值第一个匹配项的索引位置
8LinkList.insert(index,obj)将对象插入到链表中指定位置
9LinkList.pop([index=-1])移除链表中的一个元素(默认最后一个元素),并且返回该元素的值
10LinkList.remove(obj)移除链表中某个值的第一个匹配项
11LinkList.reverse()反向链表中所有的元素
12LinkList.sort([reverse=False])对原链表进行排序,默认升序
13LinkList.__len__()返回当前链表中元素的个数,在调用len方法时触发
14LinkList.__str__()直接打印对象时调用,也即在调用str方法时触发
15LinkList.__iter__()实现链表对象的可迭代,比如for循环,list()
16LinkList.__add__()两个对象进行+操作调用,self对象自身不发生改变
17LinkList.__mul__()进行*重复操作,self对象自身不发生改变,类似[1, 2]*3


  • 生成链表对象
list1 = LinkList([])
list2 = LinkList([1, 3, 2])
list3 = LinkList(LinkList([1, 2]))
print(list1, list2, list3, sep="\n")

产生对象


  • 对象当前元素个数
print(list1.size_(), list2.size_(), list3.size_())

元素个数


  • 链表是否为空
print(list1.is_empty(), list2.is_empty(), list3.is_empty())

链表是否为空


  • 链表清空
print("list2: "+str(list2))
list2.clear()
print(list2.is_empty())

链表清空


  • 末尾添加一个新的对象
print("before: " + str(list2))
list2.append(10)
print("after: " + str(list2))

在这里插入图片描述


  • 指定元素在链表中出现的次数
print("list2: " + str(list2))
print("%d的个数:%d, %d的个数: %d" % (2, list2.count(2), 3, list2.count(3)))

出现的次数


  • 扩展原来的链表
print("list2: " + str(list2), "size: " + str(list2.size_()))
list2.extend([10, 20])
print("list2: " + str(list2), "size: " + str(list2.size_()))

扩展链表


  • 索引位置
print("list2: " + str(list2), "index of 3: " + str(list2.index(3)))

索引位置


  • 插入到链表中指定位置新元素
print("before: " + str(list2))
list2.insert(-2, 1111)
print("after: " + str(list2))

插入元素


  • 移除链表中索引位置的一个元素
print("before: " + str(list2))
list2.pop(-3)
print("after: " + str(list2))

移除元素


  • 移除链表中某个值的第一个匹配项
print("before: " + str(list2))
list2.remove(3)
print("after: " + str(list2))

移除元素


  • 反向链表中所有的元素
print("before: " + str(list2))
list2.reverse()
print("after: " + str(list2))

反转链表


  • 原链表进行排序
print("before: " + str(list2))
list2.sort()
print("after: " + str(list2))

排序


  • 链表元素个数
print(list2, "size: " + str(len(list2)))

元素个数


  • 打印对象
print(list2, str(list2), sep="\n")

打印对象


  • 链表对象可迭代
print(list(list2))
for data in list2:
    print(data, end=" ")
print()

l链表对象可迭代


  • 两个对象进行+连接操作
print(list2, list3)
print(list2 + list3)

连接操作


  • 重复操作
print(list2, "size: " + str(len(list2)))
print(list2*3, "size: " + str(len(list2)))

重复操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值