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函数装饰器用法实例详解
Jun 04 Python
Python中文字符串截取问题
Jun 15 Python
python中关于for循环的碎碎念
Jun 30 Python
pygame实现弹力球及其变速效果
Jul 03 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
Python 中导入csv数据的三种方法
Nov 01 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
Python实现的文轩网爬虫完整示例
May 16 Python
django数据模型on_delete, db_constraint的使用详解
Dec 24 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
pytorch DataLoader的num_workers参数与设置大小详解
May 28 Python
利用Python多线程实现图片下载器
Mar 25 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 include_path设置技巧分享
2011/07/03 PHP
php开启openssl的方法
2014/05/15 PHP
php遍历目录方法小结
2015/03/10 PHP
修改PHP脚本使WordPress拦截垃圾评论的方法示例
2015/12/10 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
laravel入门知识点整理
2020/09/15 PHP
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
python实现dict版图遍历示例
2014/02/19 Python
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
Windows下python3.7安装教程
2018/07/31 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
使用 pytorch 创建神经网络拟合sin函数的实现
2020/02/24 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
python 模拟登录B站的示例代码
2020/12/15 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
学生党员思想汇报范文
2014/01/09 职场文书
春节联欢会主持词
2014/03/24 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
上班时间打瞌睡检讨书
2014/09/26 职场文书
2014年教学管理工作总结
2014/12/02 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
SQL 聚合、分组和排序
2021/11/11 MySQL
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python