python数据结构链表之单向链表(实例讲解)


Posted in Python onJuly 25, 2017

单向链表

单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。

python数据结构链表之单向链表(实例讲解)

表元素域elem用来存放具体的数据。

链接域next用来存放下一个节点的位置(python中的标识)

变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。

节点实现

class Node(object):
 """单链表的结点"""
 def __init__(self,item):
  # item存放数据元素
  self.item = item
  # next是下一个节点的标识
  self.next = None

单链表的操作

is_empty() 链表是否为空

length() 链表长度

travel() 遍历整个链表

add(item) 链表头部添加元素

append(item) 链表尾部添加元素

insert(pos, item) 指定位置添加元素

remove(item) 删除节点

search(item) 查找节点是否存在

单链表的实现

class Singlepnkpst(object):
 """单链表"""
 def __init__(self):
  self.__head = None
 
 def is_empty(self):
  """判断链表是否为空"""
  return self.__head == None
 
 def length(self):
  """链表长度"""
  # cur初始时指向头节点
  cur = self.__head
  count = 0
  # 尾节点指向None,当未到达尾部时
  while cur != None:
   count += 1
   # 将cur后移一个节点
   cur = cur.next
  return count
 
 def travel(self):
  """遍历链表"""
  cur = self.__head
  while cur != None:
   print(cur.item,end = ' ')
   cur = cur.next
  print("")

头部添加元素

python数据结构链表之单向链表(实例讲解)

def add(self, item):
"""头部添加元素"""

# 先创建一个保存item值的节点

node = Node(item)

# 将新节点的链接域next指向头节点,即_head指向的位置

node.next = self.__head

# 将链表的头_head指向新节点

self.__head = nod

尾部添加元素

def append(self, item):
"""尾部添加元素"""

node = Node(item)

# 先判断链表是否为空,若是空链表,则将_head指向新节点

if self.is_empty():


self.__head = node

# 若不为空,则找到尾部,将尾节点的next指向新节点

else:


cur = self.__head


while cur.next != None:



cur = cur.next


cur.next = node

指定位置添加元素

python数据结构链表之单向链表(实例讲解)

def insert(self, pos, item):
"""指定位置添加元素"""

# 若指定位置pos为第一个元素之前,则执行头部插入

if pos <= 0:
 
self.add(item)

# 若指定位置超过链表尾部,则执行尾部插入

epf pos > (self.length()-1):
 
self.append(item)

# 找到指定位置

else:


node = Node(item)


count = 0


# pre用来指向指定位置pos的前一个位置pos-1,初始从头节点开始移动到指定位置


pre = self.__head


while count < (pos-1):



count += 1



pre = pre.next


# 先将新节点node的next指向插入位置的节点


node.next = pre.next


# 将插入位置的前一个节点的next指向新节点


pre.next = node

删除节点

python数据结构链表之单向链表(实例讲解)

def remove(self,item):
"""删除节点"""

cur = self.__head

pre = None

while cur != None:

# 找到了指定元素

if cur.item == item:


# 如果第一个就是删除的节点


if not pre:



# 将头指针指向头节点的后一个节点



self.__head = cur.next


else:



# 将删除位置前一个节点的next指向删除位置的后一个节点



pre.next = cur.next



break


else:



# 继续按链表后移节点



pre = cur



cur = cur.next

查找节点是否存在

def search(self,item):
"""链表查找节点是否存在,并返回True或者False"""

cur = self.__head

while cur != None:


if cur.item == item:



return True



cur = cur.next


return False

以上这篇python数据结构链表之单向链表(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中二维阵列的变换实例
Oct 09 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
Python实现简单的多任务mysql转xml的方法
Feb 08 Python
pandas object格式转float64格式的方法
Apr 10 Python
python3个性签名设计实现代码
Jun 19 Python
Python 加密与解密小结
Dec 06 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
django ModelForm修改显示缩略图 imagefield类型的实例
Jul 28 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
使用python客户端访问impala的操作方式
Mar 28 Python
如何在windows下安装配置python工具Ulipad
Oct 27 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 #Python
利用django如何解析用户上传的excel文件
Jul 24 #Python
Python编程之变量赋值操作实例分析
Jul 24 #Python
Python模块结构与布局操作方法实例分析
Jul 24 #Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 #Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 #Python
python引入导入自定义模块和外部文件的实例
Jul 24 #Python
You might like
PHP array 的加法操作代码
2010/07/24 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
在laravel中使用with实现动态添加where条件
2019/10/10 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python中的多重继承实例讲解
2014/09/28 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python占用的内存优化教程
2019/07/28 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
python实现加密的方式总结
2020/01/19 Python
django-csrf使用和禁用方式
2020/03/13 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
英国领先的鞋类零售商:Shoe Zone
2018/12/13 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
用Python写一个for循环的例子
2016/07/19 面试题
《普罗米修斯》教学反思
2016/02/22 职场文书
一封真诚的自荐信帮你赢得机会
2019/05/07 职场文书
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL