python链表的创建_python 创建链表

1 #-*- coding=utf-8 -*-

2 #software: 算法学习

3 #datetime:2020/4/8 11:13 上午

4

5 classNode(object):6

7 def __init__(self, data=None, next=None):8 self._value =data9 self._next =next10

11 defget_value(self):12 returnself._value13

14 defget_next(self):15 returnself._next16

17 defset_value(self, new_data):18 self._value =new_data19

20 defset_next(self, new_next):21 self._next =new_next22

23

24 classLinkList(object):25

26 def __init__(self):27 self._head =Node()28 self._tail =self._head29 self._length =030

31 defhead(self):32 """

33 链表的第一个元素(除去头节点)34 :return:35 """

36 ifself._head.get_next():37 returnself._head.get_next()38 else:39 returnNode()40

41 deftail(self):42 """

43 链表的最后一个元素44 :return:45 """

46 returnself._tail47

48 defis_empty(self):49 """

50 判断链表是否为空51 :return:52 """

53 return self._length ==054

55 defsize(self):56 """

57 链表的大小58 :return:59 """

60 returnself._length61

62 defadd(self, value):63 """

64 从头部插入节点65 :param value:66 :return:67 """

68 new_node =Node(value)69 new_node.set_next(self._head.get_next())70 self._head.set_next(new_node)71 self._length += 1

72

73 defappend(self, value):74 """

75 从尾部追加节点76 :param value:77 :return:78 """

79 new_node =Node(value)80 ifself.is_empty():81 self._head.set_next(new_node)82 else:83 current =self._head84 whilecurrent.get_next():85 current =current.get_next()86 current.set_next(new_node)87 self._tail =new_node88 self._length += 1

89

90 defsearch(self, value):91 """

92 查找数据,返回-1或者节点索引93 :param value:94 :return:95 """

96 current =self._head.get_next()97 count =098 whilecurrent.get_next():99 if current.get_value() ==value:100 returncount101 current =current.get_next()102 count += 1

103 return -1

104

105 defremove(self, value):106 """

107 删除 返回该数据或者-1108 :param value:109 :return:110 """

111 current =self._head112 pre =None113 whilecurrent.get_next():114 if current.get_value() ==value:115 if notpre:116 self._head =current.get_next()117 else:118 pre.set_next(current.get_next())119 self._length -= 1

120 returncurrent.get_value()121 pre =current122 current =current.get_next()123 else:124 return -1

125

126

127 definsert(self, index, value):128 """

129 插入数据节点130 :param index:131 :param value:132 :return:133 """

134 if index <= 1:135 self.add(value)136 elif index >self.size():137 self.append(value)138 else:139 new_node =Node(value)140 count =0141 current =self._head142 pre =None143 while count

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值