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 MySQL数据库连接池组件pymysqlpool详解
Jul 07 Python
Python3计算三角形的面积代码
Dec 18 Python
Python爬虫爬取一个网页上的图片地址实例代码
Jan 16 Python
Python单元测试实例详解
May 25 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
python实现彩票系统
Jun 28 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
在 Python 中接管键盘中断信号的实现方法
Feb 04 Python
使用OpenCV实现道路车辆计数的使用方法
Jul 15 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP 与 UTF-8 的最佳实践详细介绍
2017/01/04 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
js动态获取时间的方法分析
2019/08/02 Javascript
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
使用python实现多维数据降维操作
2020/02/24 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
体育教育个人自荐信范文
2013/12/01 职场文书
一年级数学教学反思
2014/02/01 职场文书
创建学习型党组织实施方案
2014/03/29 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
关于教师节的广播稿
2014/09/10 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
2016年春季运动会加油稿
2015/07/22 职场文书
导游带团欢迎词
2015/09/30 职场文书