• python3实现链表


    1、链表的实现

      a、链表的结构为:

      b、链表的实现方法;

    #链表结构实现  私有属性_pro_item是指向下个节点的指针,_item为此节点的值
    class ChainDemo():
    
        def __init__(self,item = None,pos_item=None):
    
            self._item = item
            self._pos_item = pos_item
    
    
    if __name__ == '__main__':
        chain = ChainDemo('A',(ChainDemo('B',ChainDemo('C',ChainDemo('D')))))
        while True:
            print(chain._item)
            if chain._pos_item != None:
                chain = chain._pos_item
            else:
                break

     2、实现对链表的操作(增删)

    #链表节点结构实现  私有属性_pro_item是指向下个节点的指针,_item为此节点的值
    class Node():
    
        def __init__(self,item = None,pos_item=None):
    
            self._item = item
            self._next = pos_item
    
        def __repr__(self):
            '''
            用来定义Node的字符输出,
            print为输出item
            '''
            return str(self._item)
    
    #单链表实现
    class Chain():
    
        def __init__(self):
            self._head = None
            self.length = 0
    
        #判空
        def isEmpty(self):
            return self.length == 0
    
        #链表结尾插入
        def append(self,item):
    
            if isinstance(item,Node):
                node = item
            else:
                node = Node(item)
    
    
            if self._head == None:
                self._head = node
            else:
                be_node = self._head
                while be_node._next:
                    be_node = be_node._next
                be_node._next = node
            self.length += 1
    
    
        #插入数据
        def insert(self,index,item):
    
            if self.isEmpty():
                print('this chain table is empty')
                return
    
            if index<0 or index >= self.length:
                print("error: out of index")
                return
    
            in_node = Node(item)
            node  = self._head
            count = 1
    
            while True:
                node = node._next
                count += 1
                if count == index:
    
                    next_node = node._next
                    node._next = in_node
                    in_node._next = next_node
                    self.length += 1
                    return
    
    
                # node = s
    
    
        #删除数据
        def delete(self,index):
    
            if self.isEmpty():
                print('this chain table is empty')
                return
    
            if index<0 or index >= self.length:
                print("error: out of index")
                return
            # if index == 0
            #     self._head = None
            else:
                node = self._head
                count = 0
                while True:
                    count += 1
                    if index == count:
                        node._next = node._next._next
                        break
                    node = node._next
    
    
            self.length -= 1
    
        def __repr__(self):
            if self.isEmpty():
                print("the chain table is empty")
                return
            nlist = ""
            node = self._head
            while node:
                nlist += node._item +''
                node = node._next
            return nlist
    
    
    if __name__ == '__main__':
        chain = Chain()
        chain.append('A')
        chain.append('B')
        chain.append('C')
        chain.append('D')
        chain.append('E')
        chain.append('F')
        chain.append('G')
        chain.insert(4,'p')
        chain.delete(3)
        print(chain,chain._head._item,chain.length)
  • 相关阅读:
    【Android开发学习笔记】【高级】【随笔】插件化——初探
    【Android测试】【第十三节】Uiautomator——如何组织好你的测试代码(项目实战)
    【Android测试】【第十二节】Uiautomator——API详解
    【Android测试】【第十一节】Uiautomator——简介
    【Android测试】【第十节】MonkeyRunner—— 录制回放
    【Android测试】【第九节】MonkeyRunner—— 初识
    poj 1475 推箱子
    leetcode Ch3-DFS & Backtracking I
    Windows Socket和Linux Socket编程的区别 ZZ
    Linux网络编程入门 (转载)
  • 原文地址:https://www.cnblogs.com/jiuyang/p/7930470.html
Copyright © 2020-2023  润新知