链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接.

链表的数据结构如下图所示

在链表中删除操作可以通过修改指针来实现,如下图所示:

插入则是调整,插入点的前后两个指针的指向关系,如下图所示:

但是和c不一样,python没有专门的指针概念,在python中每个变量都是指针,例如:

用内置数据结构(list, dict, tuple等)的嵌套/组合,它们隐式地包含了指向/嵌套关系,如graph[u][v]={w0,w1..}

类的成员变量、嵌套类可能包含了指向/嵌套关系;

引用表示指向关系,只不过引用不能像指针一样运算,比如 p + 1 指向下一个元素,所以可能限制颇多

因此,要实现链表的操作,不能和c一样直接对指针进行操作.

链表实现

实现链表总体需要两部

1.定义链表:# Definition for singly-linked list.

class ListNode(object):

def __init__(self):

self.val = None

self.next = None

2.对链表进行操作class ListNode_handle:

def __init__(self):

self.cur_node = None

def add(self, data):

#add a new node pointed to previous node

node = ListNode()

node.val = data

node.next = self.cur_node

self.cur_node = node

return node

def print_ListNode(self, node):

while node:

print '\nnode: ', node, ' value: ', node.val, ' next: ', node.next

node = node.next

def _reverse(self, nodelist):

list = []

while nodelist:

list.append(nodelist.val)

nodelist = nodelist.next

result = ListNode()

result_handle = ListNode_handle()

for i in list:

result = result_handle.add(i)

return result

其中对链表进行操作部分,大致是包括添加新的node, 反向排列链表, 打印链表.

添加链表节点时候操作如下:

假设有要完成链表操作为:ListNode_1

链表是:l1 = ListNode()

且需要吧1,8,3按1 -->8 -->3的顺序放入链表中,需要进行的操作则ListNode_1 = ListNode_handle()

l1 = ListNode()

l1_list = [1,8,3]

for i in l1_list:

l1 = ListNode_1.add(i)

结果是:

1 -->8 -->3

调用反向排列链表方式如下:l1 = ListNode_1._reverse(l1)

打印链表的操作如下:ListNode_1.print_ListNode(l1)

GitHub: https://github.com/DinnerHowe/LeetCode.git

参考:

python链表怎么定义_python:链表定义以及实现相关推荐

  1. python单链表逆序_python链表倒序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...

  2. python函数参数定义_python函数定义中的5种参数

    python函数参数定义 Python函数定义中的5种参数类型: (5 Types of Arguments in Python Function Definition:) default argum ...

  3. python链表实现多项式_Python链表之两数之和

    两数之和 [今日知图] 标记 某一块代码可能需要稍后处理 使用m增加一个标记,标记名称可以是a~z和A~Z之间的任意一个字母; 添加标记了的行如果被删除,标记同时被删除; 后面的标记名与前面一致会覆盖 ...

  4. python 定义变量怎么定义_python变量定义和定义规范

    Python变量命名规范 模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类名: 单词首字母大写 AdStats ConfigUtil 全局变量名(类变量,在jav ...

  5. python函数不定参数_python如何定义不定参数函数

    *args,可以传入任意多个参数 **args,以字典形式传入任意多个参数 元组形式: 1.定义函数 def test1(*args): print('################test1### ...

  6. python变量生命周期_python 变量定义及变量生命周期

    第一部分 最近在写Python的时候发现一个好玩的现象,就是在if else重定义的变量,没有声明全局,在外部也可以使用, 这里涉及到一个python变量生命周期的问题. python能够改变变量作用 ...

  7. python私有属性怎么定义_Python中定义私有属性的方法是()。

    [判断题]请假条带有请求的性质,所以一般来说篇幅要尽量长一些,以示郑重;更多要用煽情性语句,以打动对方.( ) [单选题]关于类和对象的关系,下列描述正确的是(). [选择]Трудоспособны ...

  8. python字符串怎么定义_Python 字符串定义

    2009 例如:'string'."string"."""string"""或者是'''string'''. 在使用上, ...

  9. python矩阵定义_python矩阵定义

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python的numpy创造矩阵from numpy import matimp ...

  10. python函数参数定义_Python函数定义及参数详解

    函数定义 首先我们来创建一个函数,输出指定范围内的斐波拉契数列(Fibonacci series). #!/usr/bin/env python #coding=utf-8 ''' Created o ...

最新文章

  1. MySQL数据库root账户密码忘记两种处理方法转载
  2. 《区块链原理、设计与应用》一3.3 征信和权属管理
  3. Rosonblatt线性感知器
  4. 港科大陈凯、杨强教授新书重磅发布,系统揭秘隐私计算 | 文末送书
  5. Day11多态部分-1 【1.1 多态的体现】
  6. python 列表比较不同_python实现比较两段文本不同之处的方法
  7. 跟着石头哥哥学cocos2d-x(四)--cocos2dx中的动画以及TexturePacker使用
  8. Java中lastValue_在Logstash中为sql_last_value使用表的ID?
  9. 数组重复次数最多的元素递归_在不使用递归的情况下计算链接列表中元素的出现次数...
  10. 机器人走方格(51Nod-1119)
  11. 动态规划(二)——经典问题之最长上升子序列
  12. 计算机造句英语,电子计算机造句_造句大全
  13. 2015年4月25日浙江省ACM比赛题解
  14. 爬虫项目七:Python对唯品会商品数据、评论数据的爬取
  15. SYBASE 12.5 维护手册 3. 技术专刊
  16. Beam Search(集束搜索)算法
  17. TTN服务器LoRaWAN网关配置流程
  18. php在html中无法解析json数据,json字符串无法解析的问题
  19. 都说打印机又笨又丑 这一回联想小新给你好看!
  20. *floa类型和long类型那个取值范围更大?

热门文章

  1. delphi 怎么监测image有没有变动_社会舆情监测引导应对解决方案
  2. ubuntu导入第三方库_ubuntu用户切换、配置Python开发环境与所需的第三方库
  3. java oracle临时表,JdbcTemplate操作oracle的临时表
  4. postgres 支持的线程数_为什么 Java 坚持多线程不选择协程?
  5. 百度网盘迎来劲敌!非会员下载速度10MB/S……
  6. 中文 Python 开源资料合集!这应该是最全的了!
  7. GitHub 标星 5w+!Python 新手 100 天学习计划,这次再学不会算我输!
  8. Deeplearnng.AI第四部分第一周、卷积神经网络
  9. [TCP/IP] 关闭连接后为什么客户端最后还要等待2MSL
  10. BIOS和Bootloader的区别