链表的使用

#/usr/bin/python

#-*- coding: utf-8 -*-

#Function: simulate the link-list in python

#__author__: Tresser

#

class LNode(object):

#结点初始化函数, p 即模拟所存放的下一个结点的地址

#为了方便传参, 设置 p 的默认值为 0

def __init__(self, data, p=0):

self.data = data

self.next = p

class LinkList(object):

def __init__(self):

self.head = None

#链表初始化函数, 方法类似于尾插

def initList(self, data):

#创建头结点

self.head = LNode(data[0])

p = self.head

#逐个为 data 内的数据创建结点, 建立链表

for i in data[1:]:

node = LNode(i)

p.next = node

p = p.next

#链表判空

def isEmpty(self):

if self.head.next == 0:

print "Empty List!"

return 1

else:

return 0

#取链表长度

def getLength(self):

if self.isEmpty():

exit(0)

p = self.head

len = 0

while p:

len += 1

p = p.next

return len

#遍历链表

def traveList(self):

if self.isEmpty():

exit(0)

print '\rlink list traving result: ',

p = self.head

while p:

print p.data,

p = p.next

#链表插入数据函数

def insertElem(self, key, index):

if self.isEmpty():

exit(0)

if index<0 or index>self.getLength()-1:

print "\rKey Error! Program Exit."

exit(0)

p = self.head

i = 0

while i<=index:

pre = p

p = p.next

i += 1

#遍历找到索引值为 index 的结点后, 在其后面插入结点

node = LNode(key)

pre.next = node

node.next = p

#链表删除数据函数

def deleteElem(self, index):

if self.isEmpty():

exit(0)

if index<0 or index>self.getLength()-1:

print "\rValue Error! Program Exit."

exit(0)

i = 0

p = self.head

#遍历找到索引值为 index 的结点

while p.next:

pre = p

p = p.next

i += 1

if i==index:

pre.next = p.next

p = None

return 1

#p的下一个结点为空说明到了最后一个结点, 删除之即可

pre.next = None

#初始化(建立)链表与数据

data = [1,2,3,4,5]

#引用链表

l = LinkList()

l.initList(data) #调用(传值data)链表初始化函数

l.traveList()#调用链表遍历函数

#(用法例如)插入结点到索引值为3之后, 值为666

l.insertElem(666, 3)

l.traveList()#再次调用链表遍历函数

#删除索引值为4的结点

l.deleteElem(4)

l.traveList()

initlistpython_python --(链表)相关推荐

  1. 伍六七带你学算法 入门篇-链表的中间节点

    力扣-876链表的中间节点 难度-简单 给定一个带有头结点 head 的非空单链表,返回链表的中间结点. 如果有两个中间结点,则返回第二个中间结点. 示例 1: 输入:[1,2,3,4,5] 输出:此 ...

  2. Go 学习笔记(80)— Go 标准库 container/list(单链表、双链表)

    列表是一种非连续存储的容器,由多个节点组成,节点通过一些变量记录彼此之间的关系.列表有多种实现方法,如单链表.双链表等. ​ 在 Go 语言中,将列表使用 container/list 包来实现,内部 ...

  3. 数据结构(08)— 线性单链表基本操作

    1. 线性单链表数据结构 // 假定每个结点的类型用 SNode 表示 typedef struct SNodeTag {int data; // 所存储的数据元素SNodeTag *next; // ...

  4. 数据结构(05)— 线性单链表实战

    1. 设计思路 本项目的实质是完成对考生信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结 ...

  5. 使用python建立简单的单链表

    代码 import sysclass ListNode:def __init__(self, x):self.val = xself.next = None# 将列表转换成链表 def list_to ...

  6. LeetCode19. Remove Nth Node From End of List 删除链表中的倒数第n个位置的元素

    前言 本文是LeetCode19. Remove Nth Node From End of List解法,这个题目需要删除链表中的倒数第n个位置的元素 代码 # -*- coding: utf-8 - ...

  7. 【数据结构】链表中的 指针,地址

    数据结构中跳过集合,直接开始线性结构 线性结构中单链表的操作涉及到给一个变量赋值地址,所以涉及到了指针 通过指针里的地址很方便找到节点 但指针这里绕了我很长时间,不论学了多少遍也不敢说把指针学会了 地 ...

  8. LeetCode中等题之两两交换链表中的节点

    题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: 输入:head = [1,2,3,4] 输出:[ ...

  9. LeetCode简单题之合并两个链表

    题目 给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个. 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置. 下图中蓝 ...

最新文章

  1. 浅析日常网站建设中运营与优化的工作重点
  2. 虚拟化VMware之存储与虚拟机主机管理(1)
  3. day06:02oracle体系结构_存储结构
  4. SAP query生成的程序名
  5. 使用MFC进行编程,绘制直线椭圆以及样条曲线
  6. DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...
  7. 【转载】什么是C++虚函数、虚函数的作用和使用方法
  8. WPF使用Animation仿WeChat(微信)播放语音消息
  9. 微软+开源,那些亲爱的以及热爱的
  10. 计算机组装与维护思考问题,计算机组装与维护中的常见问题及解决方法
  11. JSTL (JSP标准标签库)
  12. The 'manifest_version' key must be present and set to 2 (without quotes)
  13. NRF51822的蓝牙设置
  14. 单个正态总体参数的区间估计、两个正态总体参数的区间估计 Matlab实现
  15. IP地址分类及子网掩码划分网段详解!!!
  16. 【毕设教程】单片机RFID模块的使用 - 物联网 嵌入式 毕业设计 stm32
  17. excel数据汇总统计表
  18. 深度优先搜索-Python
  19. python设计模式名片_Python 设计模式 简单工厂(设计模式之禅)
  20. iPhone手机无法锁屏无法关机问题

热门文章

  1. Stanford CoreNLP--Part of Speech
  2. 通过PHP自带的$_SERVER判断 手机访问网站自动跳转到手机版
  3. 系统安装-黑苹果之路
  4. CentOS 6.8下ELK+filebeat+redis 日志分析平台
  5. MySQL进阶之SQL优化
  6. Ubuntu 16.04扩展swap分区(内存)
  7. 使用SVN的导出功能,( 目的 : 使导出的文件目录中,不带有svn相关的文件 )
  8. JSON使用时,注意0件和空。
  9. 软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
  10. Unity中UI界面颤抖解决方法