Python实现数据结构线性链表(单链表)算法示例


Posted in Python onMay 04, 2019

本文实例讲述了Python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下:

初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。

#!/usr/bin/python
# -*- coding:utf-8 -*-
# Author: Hui
# Date:  2017-10-13
# 结点类,
class Node:
  def __init__(self, data):
    self.data = data      # 数据域
    self.next = None      # 指针域
  def get_data(self):
    return self.data
# 链表类
class List:
  def __init__(self, head):
    self.head = head      # 默认初始化头结点
  def is_empty(self):     # 空链表判断
    return self.get_len() == 0
  def get_len(self):     # 返回链表长度
    length = 0
    temp = self.head
    while temp is not None:
      length += 1
      temp = temp.next
    return length
  def append(self, node):     # 追加结点(链表尾部追加)
    temp = self.head
    while temp.next is not None:
      temp = temp.next
    temp.next = node
  def delete(self, index):      # 删除结点
    if index < 1 or index > self.get_len():
      print "给定位置不合理"
      return
    if index == 1:
      self.head = self.head.next
      return
    temp = self.head
    cur_pos = 0
    while temp is not None:
      cur_pos += 1
      if cur_pos == index-1:
        temp.next = temp.next.next
      temp = temp.next
  def insert(self, pos, node):     # 插入结点
    if pos < 1 or pos > self.get_len():
      print "插入结点位置不合理..."
      return
    temp = self.head
    cur_pos = 0
    while temp is not Node:
      cur_pos += 1
      if cur_pos == pos-1:
        node.next = temp.next
        temp.next =node
        break
      temp = temp.next
  def reverse(self, head):     # 反转链表
    if head is None and head.next is None:
      return head
    pre = head
    cur = head.next
    while cur is not None:
      temp = cur.next
      cur.next = pre
      pre = cur
      cur = temp
    head.next = None
    return pre
  def print_list(self, head):      # 打印链表
    init_data = []
    while head is not None:
      init_data.append(head.get_data())
      head = head.next
    return init_data
if __name__ == '__main__':
  head = Node("head")
  list = List(head)
  print '初始化头结点:\t', list.print_list(head)
  for i in range(1, 10):
    node = Node(i)
    list.append(node)
  print '链表添加元素:\t', list.print_list(head)
  print '链表是否空:\t', list.is_empty()
  print '链表长度:\t', list.get_len()
  list.delete(9)
  print '删除第9个元素:\t',list.print_list(head)
  node = Node("insert")
  list.insert(3, node)
  print '第3个位置插入‘insert'字符串 :\t', list.print_list(head)
  head = list.reverse(head)
  print '链表反转:', list.print_list(head)

执行结果:

Python实现数据结构线性链表(单链表)算法示例

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

Python 相关文章推荐
python数据结构之二叉树的建立实例
Apr 29 Python
Python2.x版本中maketrans()方法的使用介绍
May 19 Python
5款非常棒的Python工具
Jan 05 Python
python 统计数组中元素出现次数并进行排序的实例
Jul 02 Python
PyGame贪吃蛇的实现代码示例
Nov 21 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
Python中的延迟绑定原理详解
Oct 11 Python
python中def是做什么的
Jun 10 Python
Django实现文章详情页面跳转代码实例
Sep 16 Python
Python常用扩展插件使用教程解析
Nov 02 Python
Jmeter调用Python脚本实现参数互相传递的实现
Jan 22 Python
pandas 操作 Excel操作总结
Mar 31 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 #Python
Python实现将HTML转成PDF的方法分析
May 04 #Python
Python第三方库face_recognition在windows上的安装过程
May 03 #Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 #Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 #Python
利用python将图片版PDF转文字版PDF
May 03 #Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 #Python
You might like
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jquery简单实现鼠标经过导航条改变背景图
2013/12/17 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
jquery删除指定子元素代码实例
2015/01/13 Javascript
Bootstrap基础学习
2015/06/16 Javascript
3个可以改善用户体验的AngularJS指令介绍
2015/06/18 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
js识别uc浏览器的代码
2015/11/06 Javascript
jQuery中deferred对象使用方法详解
2016/07/14 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
jQuery+PHP实现上传裁剪图片
2020/06/29 jQuery
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
全面解析JavaScript Module模式
2020/07/24 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
Python获取服务器信息的最简单实现方法
2015/03/05 Python
python实现给数组按片赋值的方法
2015/07/28 Python
python 读写中文json的实例详解
2017/10/29 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
python 为什么说eval要慎用
2019/03/26 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
出纳员岗位职责风险
2014/03/06 职场文书
寄语是什么意思
2014/04/10 职场文书
施工安全汇报材料
2014/08/17 职场文书
个人授权委托书模板
2014/09/14 职场文书
交通违章检讨书
2014/09/21 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP