python: Linked List
# encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2024/10/12 6:29 # User : geovindu # Product : PyCharm # File : common/LinkedList.py class Node: """ Create a Node class to create a node """ def __init__(self, data): """ :param data: """ self.data = data # 资料 self.next = None # 下一条 指标 class LinkedList: """ Create a LinkedList class """ def __init__(self): """ """ self.head = None def insertAtBegin(self, data: object): """ Method to add a node at begin of LinkedList 最前端插入节点 :param data: :return: """ new_node = Node(data) if self.head is None: self.head = new_node return else: new_node.next = self.head self.head = new_node def insertAtIndex(self, data: object, index:int): """ Method to add a node at any index Indexing starts from 0. 在指定索引位置插入节点 :param data: :param index: :return: """ if (index == 0): self.insertAtBegin(data) position = 0 currentNode = self.head while (currentNode != None and position + 1 != index): position = position + 1 currentNode = currentNode.next if currentNode != None: newNode = Node(data) newNode.next = currentNode.next currentNode.next = newNode else: print("Index not present") def insertAtEnd(self, data: object): """ Method to add a node at the end of LinkedList 在最后位置插入节点 :param data: :return: """ newNode = Node(data) if self.head is None: self.head = newNode return currentNode = self.head while (currentNode.next): currentNode = currentNode.next currentNode.next = newNode def updateNode(self, val:object, index:int): """ Update node of a linked list at given position 在指定索引位置添加节点 :param val: :param index: :return: """ currentNode = self.head position = 0 if position == index: currentNode.data = val else: while (currentNode != None and position != index): position = position + 1 currentNode = currentNode.next if currentNode != None: currentNode.data = val else: print("Index not present") def removeFirstNode(self): """ Method to remove first node of linked list 删除第一个节点 :return: """ if (self.head == None): return self.head = self.head.next def removeLastNode(self): """ Method to remove last node of linked list 删除最后一个节点 :return: """ if self.head is None: return currentNode = self.head while (currentNode != None and currentNode.next.next != None): currentNode = currentNode.next currentNode.next = None def removeAtIndex(self, index:int): """ Method to remove at given index 删除指定索引位置的节点 :param index: :return: """ if self.head == None: return currentNode = self.head position = 0 if position == index: self.removeFirstNode() else: while (currentNode != None and position + 1 != index): position = position + 1 currentNode = currentNode.next if currentNode != None: currentNode.next = currentNode.next.next else: print("Index not present") def removeNode(self, data: object): """ Method to remove a node from linked list 移除所有节点 :param data: :return: """ currentNode = self.head if currentNode.data == data: self.removeFirstNode() return while (currentNode != None and currentNode.next.data != data): currentNode = currentNode.next if currentNode == None: return else: currentNode.next = currentNode.next.next def sizeOfLenght(self): """ Print the size of linked list :return: """ size = 0 if (self.head): currentNode = self.head while (currentNode): size = size + 1 currentNode = currentNode.next return size else: return 0 def printList(self): """ print method for the linked list :return: """ currentNode = self.head while (currentNode): print(currentNode.data) currentNode = currentNode.next # test '''''' # create a new linked list llist = LinkedList() # add nodes to the linked list llist.insertAtEnd('GeovinDu') llist.insertAtEnd('SibodDu') llist.insertAtBegin('GinhonZhao') llist.insertAtEnd('WeiTu') llist.insertAtIndex('HongTu', 2) # print the linked list print("Node Data") llist.printList() # remove a nodes from the linked list print("\nRemove First Node") llist.removeFirstNode() print("Remove Last Node") llist.removeLastNode() print("Remove Node at Index 1") llist.removeAtIndex(1) # print the linked list again print("\nLinked list after removing a node:") llist.printList() print("\nUpdate node Value") llist.updateNode('z', 0) llist.printList() print("\nSize of linked list :", end=" ") print(llist.sizeOfLenght())
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)