简单介绍python中的单向链表实现

news/2024/7/5 3:12:32
大家好,本篇文章主要讲的是python中的单向链表实现,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下

一、单向链表概念

单向链表的链接方向是单向的,由结点构成,head指针指向第一个成为head结点,而终止于最后一个指向None的指针,对链表的访问要通过顺序读取从头部开始。

二、建立节点对象

class Node:def __init__(self,data):self.data = data #节点的值域self.next = None #连接下一个节点,暂时指向空

三、链表对象的初始定义

class linkList:def __init__(self):self.head = None #首先建立链表头,暂时指向空

四、判断链表是否为空

#判断链表是否为空
def isEmpty(self):if self.head:return Falseelse:return True

五、获取链表长度

def length(self):if self.isEmpty():return 0else:t = self.headn = 1while t.next:t = t.nextn = n + 1return n

六、向头部添加节点

def addhead(self,data):node = Node(data) #新建一个节点node.next = self.head #新建的节点接上原来的链表self.head = node #重置链表的头

七、向尾部添加节点

def addtail(self,data):node = Node(data) #新建一个节点#先判断链表是否为空if self.isEmpty():self.addhead(data)else:t = self.head while t.next: #通过循环找到尾部t = t.nextt.next = node #尾部接上

八、指定位置插入节点

def insert(self,data,index):if index == 0 or self.isEmpty():self.addhead(data)elif index >= self.length():self.addtail(data)else:node = Node(data)t = self.headn = 1while n < index - 1:t = t.nextn = n + 1a = t.next.nextt.next = nodenode.next = a

九、删除指定位置的节点

def delete(self,index):if self.isEmpty():print("The linked list is empty")else:t = self.headif index == 0:self.head = t.nextelif index == self.length() - 1:n = 1while n < self.length() - 1:t = t.nextn = n + 1t.next = Noneelif index > self.length() - 1:print("Out of range")elif index < 0:print("Wrong operation")else:n = 1while n < index - 1:t = t.nextn = n + 1a = t.next.nextt.next = a

十、查找是否有该数据的节点

def search(self,data):t = self.headn = 1while t.next:if t.data == data:print(str(n) + " ")t = t.nextn = n + 1if (t.data == data):print(str(n) + " ")

十一、遍历输出整个链表

def form(self,datalist):self.addhead(datalist[0])for i in range(1,len(datalist)):self.addtail(datalist[i])t = self.headwhile t.next:print(t.data)t = t.nextprint(t.data)

十二、输入数据创建链表

def form(self,datalist):self.addhead(datalist[0])for i in range(1,len(datalist)):self.addtail(datalist[i])t = self.headwhile t.next:print(t.data)t = t.nextprint(t.data)

十三、具体实现

data = input("input(以空格为界):")
data = data.split(" ")
linkList = linkList()
linkList.form(data) #创建链表
addlist = linkList.addhead(5) #在头节点加入
linkList.ergodic() #遍历输出
addlist = linkList.addtail(5) #在尾节点加入
linkList.ergodic() #遍历输出
linkList.search(5) #查找是否有"5"的节点
linkList.delete(4) #删除第4个数据
linkList.ergodic() #遍历输出
print(linkList.length()) #输出链表长度
linkList.insert(89,2) #指定位置插入数据
linkList.ergodic() #遍历输出

到此这篇关于python中的单向链表实现的文章就介绍到这了。


http://lihuaxi.xjx100.cn/news/282053.html

相关文章

图像配准的前世今生:从人工设计特征到深度学习

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达机器之心编译参与&#xff1a;Nurhachu Null&#xff0c;Geek AI作者&#xff1a;Emma Kamoun作为计算机视觉的重要研究课题&#xff0c;图像配准经历了从传统方法走向深度…

优秀博士学位论文精华版:基于深度学习的自然场景文字检测与识别方法研究...

本文选自《中国人工智能学会通讯》 2020年 第10卷 第2期 优秀博士学位论文精华版&#xff0c;CAAI会员中心编辑。该博士论文原作者石葆光2018年毕业于华中科技大学&#xff0c;师从于白翔老师&#xff0c;目前就职于微软雷德蒙德总部。摘 要本文基于深度学习框架&#xff0c;构…

入门必备 | 一文读懂神经架构搜索

作者 | Md Ashiqur Rahman编译 | 刘静转载自图灵TOPIA&#xff08;ID: turingtopia&#xff09;近期谷歌大脑团队发布了一项新研究&#xff1a;只靠神经网络架构搜索出的网络&#xff0c;不训练&#xff0c;不调参&#xff0c;就能直接执行任务。这样的网络叫做WANN&#xff0c…

计算机组成原理-输入输出系统(持续更新中)

I/O系统基本概念 基本概念 I/O硬件 现代计算机的结构 “I/O”就是"输入/输出" IO设备就是可以将数据输入到计算机&#xff0c;或者可以接收计算机输出数据的外部设备。 常见的IO设备 主机如何与I/O设备进行交互&#xff1f; I/O接口&#xff1a;又称I/O控制器&…

c#直接调用ssis包实现Sql Server的数据导入功能

调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过&#xff0c;自己参考后也动手实现了一下&#xff0c;上一次笔者的项目中还用了一下这个功能。思前想后&#xff0c;决定还是贴一下增强记忆&#xff0c;高手请54.1、直接调用ssis包&#xff0c;需要引用Microsof…

Linux技术的成功之处

相信很多人在接触linux之前&#xff0c;都应该接触过windows系统&#xff0c;毕竟这个系统在中国而言&#xff0c;几乎是所有同学从小就接触到的一个系统&#xff0c;每当我们打开新买的电脑的时候&#xff0c;总会弹出熟悉的Windows界面。而今天在这里要说的是一个几乎能和win…

百度与华为重磅合作!李彦宏:技术是百度的信仰

导语&#xff1a;这是百度第三年举办AI开发者大会。一生二&#xff0c;二生三&#xff0c;三生万物。AI虽然不能产生万物&#xff0c;但是正在“唤醒万物”。 作者 | 阿司匹林 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在今天上午举行的的百度AI开发者大…

如何在 Python 中创建一个简单的神经网络

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达引言在过去的几十年里&#xff0c;机器学习对世界产生了巨大的影响&#xff0c;而且它的普及程度似乎在不断增长。最近&#xff0c;越来越多的人已经熟悉了机器学习的子领…