数据结构(三)链表

链表是一种物理存储结构上 非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
 
无头单向非循环列表:结构简单,一般不会单独用来存放数据。实际中更多是作为其他数据结构的子结构,比如说哈希桶等等。
带头双向循环链表:结构最复杂,一般单独存储数据。实际中经常使用的链表数据结构,都是带头双向循环链表。这个结构虽然复杂,但是使用代码实现后会发现这个结构会带来很多优势,实现反而简单了。
 
一、链表和数组的区别:
 
1.两者的区别:
    - 数组静态分配内存,链表动态分配内存。
    - 数组在内存中是连续的,链表是不连续的。
 
2.链表的优点
    - 插入和删除的效率高,只需要改变指针的指向就可以进行插入和删除。
    -内存利用率高,不会浪费内存,可以使用内存中细小的不连续的空间,只有在需要的时候才去创建空间。大小不固定,拓展很灵活。
 
3.链表的缺点
    - 查找的效率低,因为链表是从第一个节点向后遍历查找。
 
 
二、代码实现
class Node:
    def __init__(self, val, next=None):
        self.val = val
        self.next = next
# 基本构造过程
node1 = Node([1,2,3])
node2 = Node(0, node1)
node3 = Node('YY', node2)
cur = node3
while cur:
    print('%s->' % cur.val, end='')
    cur = cur.next
print('None')
 

猜你喜欢

转载自www.cnblogs.com/xiaoqichaoren/p/12951655.html