• 实现链表的基本操作(数据结构)-python版


    class Node:
        def __init__(self, data):
            self.data=data
            self.next=None
    
        def __repr__(self):
            return f"Node(self.data)"
    
    
    class LinkedList:
        def __init__(self):
            self.head=None
    
        def insert_tail(self,data):
            if self.head is None:
                self.insert_head(data)
            else:
                temp = self.head
                while temp.next:
                    temp = temp.next
                temp.next = Node(data)
    
        def insert_head(self, data):
            new_node = Node(data)
            if self.head:
                new_node.next = self.head
            self.head = new_node
    
        def print_list(self):
            temp = self.head
            while temp:
                temp = temp.next
    
        def delete_head(self):
            temp = self.head
            if self.head:
                self.head = self.head.next
            return temp
    
        def delete_tail(self):
            temp = self.head
            if self.head:
                if self.head.next is None:
                    self.head = None
                else:
                    while temp.next.next:
                        temp = temp.next
                    temp.next, temp = None, temp.next
            return temp
    
        def is_empty(self):
            return self.head is None
    
        def reverse(self):
            prev = None
            current = self.head
    
            while current:
                next_node = current.next
    
                current.next = prev
    
                prev = current
    
                current = next_node
    
            self.head = prev
    
        def __repr__(self):
            current =self.head
            string_repr = ""
            while current:
                string_repr += f"{current} -->"
                current = current.next
            return string_repr + "End"
    
        def __getitem__(self, index):
            current = self.head
    
            if current is None:
                raise IndexError("The linked List is empty")
    
            for _ in range(index):
                if current.next is Node:
                    raise IndexError("Index out of range")
                current = current.next
            return current
    
        def __setitem__(self, index, data):
            current = self.head
            if current is None:
                raise IndexError("The Linked List is empty")
            for i in range(index):
                if current.next is None:
                    raise IndexError("Index out of range")
                current = current.next
            current.data = data
    
        def __len__(self):
    
            if not self.head:
                return 0
    
            count = 0
            cur_node = self.head
            while cur_node.next:
                count += 1
                cur_node = cur_node.next
            return count + 1
    
  • 相关阅读:
    tensorflow 学习笔记 多层感知机
    tensorflow 学习笔记(转)
    python学习笔记 map&&reduce
    java中的接口和php的接口的区别
    php中的内存划分
    workerman stop失败
    Java中的内存划分
    php和java语法区别
    Docker:Swarm + Stack 一站式部署容器集群
    docker 配置私有仓库
  • 原文地址:https://www.cnblogs.com/changting/p/13706258.html
Copyright © 2020-2023  润新知