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网络编程学习笔记(10):webpy框架
Jun 09 Python
wxpython中利用线程防止假死的实现方法
Aug 11 Python
Python操作MongoDB详解及实例
May 18 Python
Python中常用信号signal类型实例
Jan 25 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
pycharm 主题theme设置调整仿sublime的方法
May 23 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
Python字典循环添加一键多值的用法实例
Jan 20 Python
python实现视频读取和转化图片
Dec 10 Python
python 实现Flask中返回图片流给前端展示
Jan 09 Python
python3 xpath和requests应用详解
Mar 06 Python
python要安装在哪个盘
Jun 15 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静态新闻列表自动生成代码
2007/06/14 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
深入分析php中接口与抽象类的区别
2013/06/08 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
php检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
javascript封装简单实现方法
2015/08/11 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
2016/12/21 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
2018/04/09 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
实例讲解Python爬取网页数据
2018/07/08 Python
Django中的forms组件实例详解
2018/11/08 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
详解python 降级到3.6终极解决方案
2020/02/06 Python
Python如何重新加载模块
2020/07/29 Python
法国床上用品商店:La Compagnie du lit
2019/12/26 全球购物
销售主管竞聘书
2014/03/31 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
2014年团支部工作总结
2014/11/17 职场文书
jdbc中自带MySQL 连接池实践示例
2022/07/23 MySQL