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网络编程学习笔记(10):webpy框架
Jun 09 Python
python生成九宫格图片
Nov 19 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
Jun 17 Python
Python实现字符串中某个字母的替代功能
Oct 21 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
使用IPython或Spyder将省略号表示的内容完整输出
Apr 20 Python
基于python实现计算两组数据P值
Jul 10 Python
pandas to_excel 添加颜色操作
Jul 14 Python
基于pycharm 项目和项目文件命名规则的介绍
Jan 15 Python
python如何为list实现find方法
May 30 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(3) php 函数
2010/02/15 PHP
php中获取关键词及所属来源搜索引擎名称的代码
2011/02/15 PHP
一个PHP实现的轻量级简单爬虫
2015/07/08 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
WordPress 插件——CoolCode使用方法与下载
2007/07/02 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
2016/12/21 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
js实现select下拉框选择
2020/01/11 Javascript
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
详解python中asyncio模块
2018/03/03 Python
django中模板的html自动转意方法
2018/05/27 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
性能服装:HYLETE
2018/08/14 全球购物
自荐信格式简述
2014/01/25 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
甘南现象心得体会
2014/09/11 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
病危通知书样本
2015/04/17 职场文书
教研活动主持词
2015/07/03 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
小程序实现文字循环滚动动画
2021/06/14 Javascript
python字典的元素访问实例详解
2021/07/21 Python
MySQL千万级数据表的优化实战记录
2021/08/04 MySQL
Nginx使用ngx_http_upstream_module实现负载均衡功能示例
2022/08/05 Servers