加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python实现单链表

发布时间:2020-12-17 17:28:45 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #coding:utf-8class Node(object): def __init__(self,data): self.data = data self.next = Noneclass NodeList(object): def __init__(self,node):

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#coding:utf-8

class Node(object):
    def __init__(self,data):
        self.data = data
        self.next = None

class NodeList(object):
    def __init__(self,node):
        self.head = node
        self.head.next = None
        self.end = self.head

    def add_node(self,node):
        self.end.next = node
        self.end = self.end.next

    def length(self):
        node = self.head
        count = 1
        while node.next is not None:
            count += 1
            node = node.next
        return count

    # delete node and return it's value
    def delete_node(self,index):
        if index+1 > self.length():
            raise IndexError('index out of bounds')
        i = 0
        node = self.head
        while True:
            if i==index-1:
                break
            node = node.next
            i += 1
        tmp_node = node.next
        node.next = node.next.next
        return tmp_node.data

    def show(self):
        node = self.head
        node_str = ''
        while node is not None:
            if node.next is not None:
                node_str += str(node.data) + '->'
            else:
                node_str += str(node.data)
            node = node.next
        print node_str

    # Modify the original position value and return the old value
    def change(self,index,data):
        if index+1 > self.length():
            raise IndexError('index out of bounds')
        i = 0
        node = self.head
        while True:
            if i == index:
                break
            node = node.next
            i += 1
        tmp_data = node.data
        node.data = data
        return tmp_data

    # To find the location of index value
    def find(self,index):
        if index+1 > self.length():
            raise IndexError('index out of bounds')
        i = 0
        node = self.head
        while True:
            if i == index:
                break
            node = node.next
            i += 1
        return node.data

#test case
n1 = Node(0)
n2 = Node(1)
n3 = Node(2)
n4 = Node(3)
n5 = Node(4)
node_list = NodeList(n1)
node_list.add_node(n2)
node_list.add_node(n3)
node_list.add_node(n4)
node_list.add_node(n5)
#node = node_list.delete_node(3)
#print node
#d = node_list.change(0,88)
data = node_list.find(5)
print data
node_list.show()

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读