Python 单链表的实现

链表结构(linked structure)在程序中是常用到的数据结构,而链表最简单的结构就是单链表(singly linked structure)。

单链表节点包括两个数据类型data和next类型,data存储数据内容,next指向下一个节点。

其节点在python的表现为:

class Node(object):
    
    def __init__(self, data, next=None):
        self.data = data
        self.next = next

这采用“引用+类”来实现链表的。Node(object)链表节点类,其实列数据类型Node(data, next)包括data数据域和next指针域。默认参数next的默认值为None,即可以这样Node(data)进行实列化,其指针域指向空。链表最后一个节点的指针域要指向None。

 

来给自己建立一个节点类型并对其构成的链表读取数据操作:

#!/usr/bin/python
'''
filename: node.py
实现:单链表的节点类型
时间:2019/5/14
作者:peipei12138
'''

class Node(object):
    '''Node(object)链表节点类,实列数据类型包括data数据域和next指针域。'''
    def __init__(self, data, next=None):
        self.data = data
        self.next = next

def print_List(head):
    '''print_List(head)函数输入Node节点类型链表头指针(头节点)输出链表所有节点data
       ,无返回值。'''
    p = head
    while p != None:
        print(p.data, end=' ')
        p = p.next
        if not p:
            print('')

def List_node_id(head):
    '''List_node_id(head)函数输入Node节点类型链表头指针(头节点)输出链表所有节点10进制存储地址
       ,无返回值。'''
    while head != None:
        print(id(head), end=' ')
        head = head.next
        if not head:
            print('')

if __name__ == "__main__":

    node0 = None
    node1 = Node('A', node0)
    node2 = Node('B', node1)

    print(node2.data, node2.next.data, node2.next.next)

else:
    print('-----Represents a singly linked node-----')

程序的运行结果:>>>B A None

 

    node0 = None
    node1 = Node('A', node0)
    node2 = Node('B', node1)

    print(node2.data, node2.next.data, node2.next.next)

这里将node0赋值为None,并把它赋给节点node1的指针域,节点node1的数据域赋值'A'……

这样便形成了一个有两个节点的短的单链表。其尾巴节点为node1,而不是node0,因为节点0不是Node类型的节点,只是一个数据:None,我们在这里把它作为尾节点的指针域;node2为链表头节点,往往需要引出一个外部参数指向它:      head = node2,因为长链表的生成往往是自动化的,需要一个头指针作为索引,head节点永远指向第一个节点。

调用实例节点node2的数据:head.data;调用实例节点node1的数据:head.next.data。

最后输出的是(节点2的数据:B,节点2指向节点(节点1)的数据:A,节点2指向的节点(节点1)其指针域的值(node0=None):None。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值