python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】


Posted in Python onOctober 24, 2019

本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#! python3
class Node():
  def __init__(self,item):
    #初始化这个节点,值和下一个指向
    self.item = item
    self.next = None
class SingleLinklist():
  def __init__(self):
    #初始化这个单链表的头指针为空
    self._head = None
  def length(self):
    #获取这个链表的长度
    count = 0
    cur = self._head
    while cur != None:
      count+=1
      cur = cur.next
    return count
  def is_empty(self):
    """判断是否为空"""
    return self._head == None
  def add(self,item):
    """在头部添加元素"""
    node = Node(item)
    node.next = self._head
    self._head = node
  def append(self,item):
    """在尾部添加元素"""
    cur = self._head
    node = Node(item)
    while cur != None:
      cur = cur.next
    cur.next = node
  def insert(self,pos,item):
    """在选定的位置添加元素"""
    cur = self._head
    node = Node(item)
    count = 0
    if pos <= 0:
      self.add(item)
    elif pos > (self.length()-1):
      self.append(item)
    else:
      while count < (pos -1):
        count+=1
        cur = cur.next
      node.next = cur.next
      cur.next = node
  def travel(self):
    """遍历整个链表"""
    cur = self._head
    while cur != None:
      print(cur.item,end=" ")
      cur = cur.next
    print(" ")
  def remove(self,item):
    """删除链表"""
    cur = self._head
    pre =None
    while cur != None:
      if cur.item == item:
        if not pre:
          self._head = cur.next
          break
        else:
          pre.next = cur.next
      else:
        pre = cur #
        cur = cur.next
  def search(self,item):
    """查找某个节点"""
    cur = self._head
    while cur != None:
      if cur.item == item:
        print("找到这个元素了")
        return True
      cur = cur.next
    print("抱歉没有这个元素")
    return False
singlistdemo = SingleLinklist()
singlistdemo.add(1)
singlistdemo.add(2)
singlistdemo.add(65)
singlistdemo.insert(2,77)
singlistdemo.insert(1,66)
singlistdemo.insert(0,66)
print(singlistdemo.length())
singlistdemo.travel()
singlistdemo.remove(1)
singlistdemo.travel()
singlistdemo.search(65)

运行结果:

6
66 65 66 2 77 1 

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python Socket实现简单TCP Server/client功能示例
Aug 05 Python
Python 3.x读写csv文件中数字的方法示例
Aug 29 Python
彻底理解Python list切片原理
Oct 27 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
浅谈Python用QQ邮箱发送邮件时授权码的问题
Jan 29 Python
python读取ini配置文件过程示范
Dec 23 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
Django2.1.7 查询数据返回json格式的实现
Dec 29 Python
plt.figure()参数使用详解及运行演示
Jan 08 Python
解决jupyter notebook图片显示模糊和保存清晰图片的操作
Apr 24 Python
Python数据可视化之用Matplotlib绘制常用图形
Jun 03 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 #Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 #Python
python模块导入的方法
Oct 24 #Python
python读取word 中指定位置的表格及表格数据
Oct 23 #Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 #Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 #Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 #Python
You might like
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
bootstrap下拉列表与输入框组结合的样式调整
2016/10/08 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
微信小程序实现首页弹出广告
2020/12/03 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
大专应届生个人简历的自我评价
2013/10/15 职场文书
业务经理岗位职责
2013/11/11 职场文书
项目开发计划书
2014/01/09 职场文书
人力资源主管岗位职责
2014/01/29 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
学校工作推荐信范文
2014/07/11 职场文书
《司马光》教学反思
2016/02/22 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL