IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 双链表插入操作与显示(头部,尾部,任意位置) -> 正文阅读

[数据结构与算法]双链表插入操作与显示(头部,尾部,任意位置)

"""
双链表三种插入法实现并显示

"""

# 定义节点类
class DoubleLinkNode():
    def __init__(self,data = None,prior = None, next = None):
        self.data = data
        self.prior = prior
        self.next = next


class DoubleLinkList():
    def __init__(self):
        self.header = None
        self.length = 0


    """头部插入"""
    def InsertInHead(self,node):
        if self.header == None:
            self.header = node
        else:
            node.next = self.header
            self.header.prior = node
            self.header = node
        self.length += 1


    """尾部插入"""
    def InsertInTail(self,node):
        cur = self.header
        if self.header is None:
            self.header = node
        else:
            while cur.next is not None:  # 让cur指针移动到最右边的一个节点
                cur = cur.next
            cur.next = node #在尾部插入新节点
            node.prior = cur # 新节点连接到上一个节点
        self.length += 1


    """根据索引位置插入节点"""
    def InsertByIndex(self,node,index):
        assert index != 0 or index <= self.length, '超出索引'
        if index <= 1: # 头部插入
            self.InsertInHead(node)
        elif index > self.length: #尾部插入
            self.InsertInTail(node)
        else: #两节点之间插入
            cur = self.header
            for i in range(1,index-1):
                cur = cur.next
            node.next = cur.next
            cur.next.prior = node
            cur.next = node
            node.prior = cur
            self.length += 1


    """判断链表是否为空"""
    def IsEmpty(self):
        if self.header is None:
            return True

    """链表遍历显示"""
    def Show(self):
        cur = self.header
        if self.IsEmpty():
            print("空链表")
        while cur:
            if cur.next is not None:
                print(cur.data,end='<->')
            else:
                print(cur.data)
            cur = cur.next




"""双链表插入实例化"""

if __name__ == "__main__":
    node = DoubleLinkNode(1) # 创建头节点 header:[None,2,None]
    DLinkList = DoubleLinkList() #实例化链表操作对象
    DLinkList.InsertInHead(node) #
    DLinkList.Show()

    """头部插入一个节点"""
    node2 = DoubleLinkNode(2)
    node3 = DoubleLinkNode(3)
    DLinkList.InsertInHead(node2)
    DLinkList.InsertInHead(node3)
    DLinkList.Show()

    """以循环的形式在头部插入节点"""
    for data in range(4,7):
        nodei = DoubleLinkNode(data)
        DLinkList.InsertInHead(nodei)
    DLinkList.Show()


    """ 尾部插入一个节点"""
    DLinkList1 = DoubleLinkList()  # 实例化链表操作对象
    node = DoubleLinkNode(0)
    DLinkList1.InsertInTail(node)
    DLinkList1.Show()

    node2 = DoubleLinkNode(2)
    node3 = DoubleLinkNode(3)
    DLinkList1.InsertInTail(node2)
    DLinkList1.InsertInTail(node3)
    DLinkList1.Show()

    """以循环的形式在尾部插入"""
    for data in range(4,7):
        new_node = DoubleLinkNode(data)
        DLinkList1.InsertInTail(new_node)
    DLinkList1.Show()

    """任意位置插入节点"""
    DLinkList1.InsertByIndex(DoubleLinkNode(1),1) #头部插入
    DLinkList1.InsertByIndex(DoubleLinkNode(2), 1)#头部插入
    DLinkList1.InsertByIndex(DoubleLinkNode(1), 9)#尾部插入
    DLinkList1.InsertByIndex(DoubleLinkNode(1), 4)#两节点之间插入
    DLinkList1.Show()

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 12:08:32  更:2022-05-10 12:12:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:29:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码