利用Python实现链表
发布日期:2021-05-08 01:40:00 浏览次数:13 分类:精选文章

本文共 2238 字,大约阅读时间需要 7 分钟。

class Node:    '''    相当于C语言中的结构体,定义了一个结点类型    '''    def __init__(self,data):        self.data=data        self.next=None # 初始化为None,如果后面不赋新值则一直为Noneclass LinkedList:    '''    __init__(self):属于类的构造函数或者初始化方法,每当创建一个这种类    的实例,这个函数就会被执行一次    '''    def __init__(self):        self.size=0;        self.head=None         self.last=None #指向尾结点的指针    def get(self,index):        if index<0 or index >=self.size:            raise Exception('超出链表节点范围')        p=self.head #p是一个指针        for i in range(index):            p=p.next #不同类之间的变量调用        return p  # P指向index    def insert(self,index,data):        if index<0 or index >=self.size:            raise Exception('超出链表节点范围')        node=Node(data)         '''        上一句创建了一个新的结点,并且传入新节点的数据是data        node.data=data        node.next=None        '''        if self.size==0: #空链表            self.head=node            self.last=node        elif index==0: # 插入头部            node.next=self.head            self.head=node        elif self.size==index: # 插入尾部            node.next=None # 这句话可以不加,因为在创建结点类时,给next初始值是None,没有这句话,node.next依然等于 None            self.last.next=node            self.last=node        else:   #插入中间结点            prve_node=self.get(index-1)            node.next=prve_node.next            prve_node.next=node        self.size += 1    def remove(self,index):        if index<0 or index >=self.size:            raise Exception('超出链表节点范围')        if index==0: # 删除头节点            removed_node=self.head #把要删除的元素保存下来            self.head=self.head.next        elif index==self.size-1: # 删除尾结点            prve_node=self.get(index-1)            removed_node=prve_node.next            prve_node.next=None            self.last=prve_node        else: # 删除中间结点            prve_node=self.get(index-1)            next_node=prve_node.next.next            removed_node=prve_node.next            prve_node.next=next_node        self.size -=1        return removed_node    def output(self):        p=self.head        while p is not None:            print(p.data)            p=p.nextif __name__=='__main__':    linkedList = LinkedList()    linkedList.insert(0,3)    linkedList.insert(0, 2)    linkedList.insert(0, 4)    linkedList.insert(3, 1)    linkedList.remove(0)    linkedList.output()

在这里插入图片描述

上一篇:栈和队列的简单介绍
下一篇:C语言结构体与C++中类的区别

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年03月20日 05时39分09秒