链表结构

链表与数组的区别:
可以根据索引访问数组元素,链表不行,链表需要沿着链表逐个移动才可以达到要访问的节点;
数组在插入和删除数据时需要在内存中移动数据项,链表不需要;
每一次插入和删除过程,链表结构会调整大小,并且不需要额外的内存代价;
数组项的逻辑顺序和内存中物理单元顺序是耦合的,链表结构的项的逻辑顺序和内存的顺序是解耦的。
思考;
链表上的数据排序?
底层内存如何支持链表插入和删除数据时不移动数据项的?

#! /usr/bin/env python
# _*_ coding: utf-8 _*_


class Node(object):
    """Represnet a single linked node"""

    def __init__(self, data, next=None):
        """Instantiates a Node with a default next of Node"""
        self.data = data
        self.next = next


if __name__ == "__main__":
    lyst = list(range(6,1,-1))
    print(lyst)

    head = None
    for count in range(5):
        # print(lyst[count])
        head = Node(lyst[count],head)
    """
    [6,5,4,3,2]
    插入顺序:
    [6][\]
    [5][->][6][\]
    [4][->][5][->][6][\]
    [3][->][4][->][5][->][6][\]
    [2][->][3][->][4][->][5][->][6][\]
    """

    """
    打印时以插入相反顺序打印
    2
    3
    4
    5
    6
    """
    while head != None:
        print(head.data)
        head = head.next

    """
    保持打印顺序不变,应该从2到6顺序插入
    """
    head = None
    lyst = list(range(6,1,-1))
    for count in range(6):
        # 先插入最后一个元素2,那么插入完成后最后2也在结构的最后一位
        head = Node(lyst[len(lyst) - 1 - count], head)

    while head != None:
        print(head.data)
        head = head.next


指针head生成了链表结构。链表插入时实际上是从右向左插入,数据的读取是从左向右完成的。(这个是怎么实现的?)
链表最近插入的项总是在结构的开始处;
因此显示数据的时候,它们按照和插入时相反的顺序出现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值