博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Python实现链表Linklist
阅读量:5029 次
发布时间:2019-06-12

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

用Python实现链表Linklist

在leetcode上面试着用Python解题,但是遇到链表、二叉树什么的,Python就用不溜。在网上看了一些资料。

完整的实现过程如下:

class Node:    next = None    data = None        def __init__(self, nodeData):        self.data = nodeData# 一个链表数据结构,包括一个 根节点root 还有 链表大小sizeclass LinkList:    root = None    size = 0;            def __init__(self):        self.root = None        size = 0            def __del__(self):        "删除链表(清空节点)"        if self.root is None:            return        curNode = self.root        while curNode.next is not None:            tempNode = curNode            curNode = curNode.next            tempNode = None        curNode = None      # Insert a new node to the LinkList    def Insert(self, newData):        "添加节点"        newNode = Node(newData)  # 每次都新建一个Node(新地址)        if self.root is None:            self.root = newNode            self.size = 1            return                tempNode = self.root        while tempNode.next is not None:            tempNode = tempNode.next        tempNode.next = newNode        self.size += 1            # def Get data of Position pos    def GetData(self, pos):        if pos >= self.size or pos < 0:            return None        else:            tempNode = self.root            for i in range(0, pos):                tempNode = tempNode.next            return tempNode.data        # Remove a certain node    def Remove(self, theData):        curNode = self.root        if curNode is None:            return                if self.size == 1 and curNode.data == theData:            curNode.data = None            curNode = None            self.size -= 1            return        elif curNode.data == theData:  # 第一个节点就是需要删除的节点            self.root = curNode.next            curNode = None            self.size -= 1            return                    while curNode.next is not None:            if curNode.next.data == theData:                tempNode = curNode.next                curNode.next = curNode.next.next                tempNode = None  # remove the node,but curNode stays still                self.size -= 1            else:                curNode = curNode.next                    # Get Root Node    def GetRoot(self):        return self.root            # def Get Size    def GetSize(self):        return self.size        # print the data of the LinkList    def Print(self):        tempNode = self.root        while tempNode is not None:            print tempNode.data,            tempNode = tempNode.next                      if __name__ == '__main__':        print ("start main()")    mylist = LinkList()  # 一个LinkList 就是一个完整的链表; Node 为链表的节点    print mylist.GetSize()        for i in range(1, 10):        mylist.Insert(i)            print ('输出该单链表:')    mylist.Print()        print ("\n mylist 的 size:%s" % mylist.GetSize())        print ("---------------------------------\n删除1号索引的元素:")    mylist.Remove(6)       mylist.Remove(1)          print ("输出删除1号索引后链表的元素:\n")    mylist.Print()         print ("\n删除后的元素个数:%s" % mylist.GetSize())

参考:

转载于:https://www.cnblogs.com/DamianZhou/p/3948864.html

你可能感兴趣的文章
linux下的文本编辑器VI的使用命令
查看>>
基础_模型迁移_CBIR_augmentation
查看>>
第二次寒假作业
查看>>
类与 对象 概念 break continue
查看>>
tensorRT使用python进行网络定义
查看>>
Luogu p1478 陶陶摘苹果(升级版)
查看>>
《第一本docker书》- 第一章笔记
查看>>
bzoj2818 Gcd
查看>>
Go语言中结构体的使用-第2部分OOP
查看>>
GET和POST有什么区别?及为什么网上的多数答案都是错的。
查看>>
MAC OS X下的Linux环境
查看>>
《那些年啊,那些事——一个程序员的奋斗史》连载再开感言
查看>>
分享45个设计师应该见到的新鲜的Web移动设备用户界面PSD套件
查看>>
常用模块之time模块
查看>>
synchronized锁住的是代码还是对象
查看>>
Codeforces 461B Appleman and Tree:Tree dp
查看>>
第十八章 5strncat函数的使用
查看>>
hibernate 复合主键映射
查看>>
【转】c++继承中的内存布局
查看>>
常见错误 无法将this 从const type 转换为 非const type
查看>>