Python单链表简单实现代码

442次阅读  |  发布于5年以前

本文实例讲述了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
    #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()

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8