链表

链表基础

链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域key和指向下一个节点的指针next。通过各个节点之间的相互连接,最终串联成一个链表。

class Node:
    '''
    节点定义
    '''

    def __init__(self, item):
        self.item = item
        self.next = None


def traversal(head):
    '''
    遍历链表
    :param head: 
    :return: 
    '''
    curNode = head
    while curNode is not None:
        print(curNode.item)
        curNode = curNode.next


# 创建节点
n1 = Node(1)
n2 = Node(3)
n3 = Node(2)

# 连接链表
n1.next = n2
n2.next = n3

traversal(n1)  # 1 3 2

print('-----')

# 插入节点
p = Node(5)
p.next = n2
n1.next = p

traversal(n1)  # 1 5 3 2

print('-----')

# 删除节点
d = n1.next
n1.next = n1.next.next
del d

traversal(n1)

print('-----')


# ============================
# 头插法:列表中的元素按照头插法,插成一个链表

def createLinkListF(li):
    l = Node('head')  # 链表头
    for i in li:
        s = Node(i)
        s.next = l.next
        l.next = s
    return l


linkl = createLinkListF([7, 8, 9])

traversal(linkl)  # head 9 8 7 

print('-----')


# ============================
# 尾插法创建链表:
# 列表中的元素按照尾插法,插成一个链表

def createLinkListR(li):
    l = Node('head')  # 链表头
    r = l
    for i in li:
        s = Node(i)
        r.next = s
        r = s
    return l


linkr = createLinkListR([1, 2, 3])

traversal(linkr) # head 1 2 3 

posted @ 2017-10-26 22:25  六神酱  阅读(154)  评论(0编辑  收藏  举报