玩蛇网提供最新Python编程技术信息以及Python资源下载!

Python模拟实现单链表源码示例

python 培训

Python模拟实现单链表源码示例。这是用Python模拟一下单链表,代码比较简单,可供初学python的朋友们参考参考,还希望大神可以给我点改进意见!

#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

#www.iplaypython.com
#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()

玩蛇网原创,转载请注明文章出处和来源网址:http://www.iplaypython.com/code/base/b618.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-04-13 16:39 玩蛇网 www.iplaypython.com

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
去顶部去底部