zoukankan      html  css  js  c++  java
  • 链表

    链表基础

    链表中每一个元素都是一个对象,每个对象称为一个节点,包含有数据域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 
    
    
  • 相关阅读:
    完全卸载 Oracle
    Windows 下 Oracle 10g 手工创建数据库
    zip & unzip 命令
    J2EE的13种核心技术规范
    Windows 8发行预览版序列号
    wget百度百科
    Application's Life Cycle
    当前网络存在的安全问题
    Ubuntu 11.10 更换 LightDM 开机登录画面
    tmp文件夹的默认权限
  • 原文地址:https://www.cnblogs.com/sunqim16/p/7739823.html
Copyright © 2011-2022 走看看