数据结构与算法单链表python描述

    技术2023-12-19  70

            今天刚用c++写完数据结构单链表描述,然后无聊的情况下,编写了python版本,当然里面很多功能我没有完全实现,只是写了些简单的单链表那让我们看看吧.

           链表结构c++版本

           基础理论这里就不讲解了,让我们上代码吧:

    #定义了节点 class Node(): __slots__ = ['_item','_next'] def __init__(self,item): self._item = item self._next = None def getItem(self): return self._item def getNext(self): return self._next def setItem(self, newItem): self._item = newItem def setNext(self, newNext): self._next = newNext

        定义链表:

    #定义链表 class SingleList(): def __init__(self): self._head = None #初始化为空链表 def isEmpty(self): return self._head == None def Length(self): current = self._head count = 0 while current != None: count += 1 current = current.getNext() return count; def ShowList(self): current = self._head while current != None: print(current.getItem(), end=" ") current = current.getNext() def Add(self, item): temp = Node(item) temp.setNext(self._head) self._head =temp def append(self,item): temp = Node(item) if self.isEmpty(): self._head = temp # 当为空的时候添加到第一个位置 else: current = self._head while current.getNext() != None: current = current.getNext() current.setNext(temp) #这个时候为最后的元素 def search(self, item): current = self._head find = False while current!= Node and not find: if current.getItem() == item: find = True else: current = current.getNext() return find def index(self,item): current = self._head count = 0 find = False while current != Node and not find: count += 1 if current.getItem() == item: find = True else: current = current.getNext() if find: return count else: raise Exception('%s is not in Linkedlist' % item) def remove(self,item): current = self._head pre = None while current != None: if current.getItem() == item: if not pre: self._head = current.getNext() else: pre.setNext(current.getNext()) break else: pre = current current = current.getNext() def insert(self, pos, item): if pos < 1: self.Add(item) elif pos > self.Length(): self.append(item) else: temp = Node(item) count = 1 pre = None current = self._head while count < pos: count +=1 pre = current current = current.getNext() pre.setNext(temp) temp.setNext(current)

    主函数:

    if __name__ == '__main__': a = SingleList() for i in range(1,10): a.append(i) print(a.Length()) a.ShowList() print('') print(a.search(2)) print(a.index(5)) a.remove(4) a.ShowList() print() a.insert(3,100) a.ShowList()

    输出结果:

    9 1 2 3 4 5 6 7 8 9 True 5 1 2 3 5 6 7 8 9 1 2 100 3 5 6 7 8 9

    喜欢的话可以关注我的博客,一起加油。

    Processed: 0.011, SQL: 9