链表的创建&遍历打印

链表,创建,遍历,打印 · 浏览次数 : 3

小编点评

**博客地址:** `https://www.cnblogs.com/zylyehuo/# -*- coding: utf-8 -*-` **文章介绍:** 文章介绍了两种链表操作:头插法和尾插法。 **头插法:** * 创建一个新的节点并将其设置为链表的第一个节点。 * 更新链表的 `next` 指针指向新节点。 * 返回链表的第一个节点。 **尾插法:** * 创建一个新的节点并将其设置为链表的末尾节点。 * 更新链表的 `prev` 指针指向新节点。 * 返回链表的末尾节点。 **方法示例:** **头插法:** ```python def create_linklist_head(li): head = Node(li[0]) for element in li[1:]: node = Node(element) node.next = head head = node return head ``` **尾插法:** ```python def create_linklist_tail(li): head = Node(li[0]) tail = head for element in li[1:]: node = Node(element) tail.next = node tail = node return head ``` **打印链表:** ```python def print_linklist(lk): while lk: print(lk.item, end=',') lk = lk.next ``` **总结:** 这篇文章介绍了头插法和尾插法的链表操作,并提供示例代码。这些方法允许您在链表中添加或删除节点,从而构建和打印任何类型的链表。

正文

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-

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


# 头插法
def create_linklist_head(li):
    head = Node(li[0])
    for element in li[1:]:
        node = Node(element)
        node.next = head
        head = node
    return head


# 尾插法
def create_linklist_tail(li):
    head = Node(li[0])
    tail = head
    for element in li[1:]:
        node = Node(element)
        tail.next = node
        tail = node
    return head


def print_linklist(lk):
    while lk:
        print(lk.item, end=',')
        lk = lk.next


# linklist = create_linklist_head([1, 2, 3, 6, 8])
linklist = create_linklist_tail([1, 2, 3, 6, 8])
print_linklist(linklist)

与链表的创建&遍历打印相似的内容:

链表的创建&遍历打印

博客地址:https://www.cnblogs.com/zylyehuo/ # -*- coding: utf-8 -*- class Node: def __init__(self, item): self.item = item self.next = None # 头插法 def creat

7.4 C/C++ 实现链表栈

相对于顺序栈,链表栈的内存使用更加灵活,因为链表栈的内存空间是通过动态分配获得的,它不需要在创建时确定其大小,而是根据需要逐个分配节点。当需要压入一个新的元素时,只需要分配一个新的节点,并将其插入到链表的头部;当需要弹出栈顶元素时,只需要删除链表头部的节点,并释放其所占用的内存空间即可。由于链表栈的空间利用率更高,因此在实际应用中,链表栈通常比顺序栈更受欢迎。在实现上,链表栈通过使用`malloc

FreeRTOS简单内核实现6 优先级

0、思考与回答 0.1、思考一 如何实现 RTOS 内核支持多优先级? 因为不支持优先级,所以所有的任务都插入了一个名为 pxReadyTasksLists 的就绪链表中,相当于所有任务的优先级都是一致的,那如果我们创建一个就绪链表数组,数组下标代表优先级,优先级为 x 的任务就插入到 pxRead

FreeRTOS简单内核实现7 阻塞链表

0、思考与回答 0.1、思考一 如何处理进入阻塞状态的任务? 为了让 RTOS 支持多优先级,我们创建了多个就绪链表(数组形式),用每一个就绪链表表示一个优先级,对于阻塞状态的任务显然要从就绪链表中移除,但是阻塞状态的任务并不是永久阻塞了,等待一段时间后应该从阻塞状态恢复,所以我们需要创建一个阻塞链

kvm链接克隆虚拟机迁移到openstack机器的实验

总结 如果是完整克隆的那种虚拟机,是可以直接在openstack使用的,如果镜像格式没问题的话。 因为kvm虚拟机大部分都是链接克隆出来的镜像,不可用直接复制使用,所以需要创建新的镜像文件 创建空盘:qemu-img create -f qcow2 mcwlink1-new.qcow2 50G 将链

万字详解常用设计模式

本文是博主在工作中对常用设计模式的使用经验总结归纳而来分享给大家。 设计模式一共有23种,本文讲解涉及如下: 责任链模式 模板方法模式 发布订阅模式 策略模式 三大分类 业界一般将设计模式分为三大类: 创建型模式:对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。有五种创建型模

Solidity入门

### 什么是 Solidity? Solidity 是一种用于编写智能合约的高级编程语言,主要用于以太坊平台。智能合约是一种在区块链上自动执行的计算机程序。Solidity 使开发人员能够创建可靠和安全的智能合约,这些合约可以用于多种用途,例如去中心化应用(DApps)的创建、数字资产的管理等。

对象存储服务中对象业务的非标接口

本文中讨论的对象存储服务及接口,主要和AWS S3对标。 AWS S3提供的对象存储业务,与传统的POSIX规范相比,舍弃了很多特性,比如: 文件类型 硬链接 软链接 目录 文件相关的操作 追加写 随机写 截断 修改名称 目录相关的操作 创建目录 修改名称 删除目录 元数据 时间 crtime即创建

.Net Core 3.0 对 MongoDB 的多条件查询(两种)操作

前言 在日常开发中,偶尔会用到 MongoDB 的数据操作,也花费了一些时间调试,因此在此处记录一下,共同进步。 废话少说,出招吧! 正文 2.1 准备工作 首先需要引入 .Net 平台链接 MongoDB 的动态库:MongoDB.Driver; 然后创建默认 DBContext 实体类: (将数

Builder 生成器模式简介与 C# 示例【创建型2】【设计模式来了_2】

在构造一个复杂的对象(参数多且有可空类型)时,通过一个统一的构造链路,可选择的配置所需属性值,灵活实现可复用的构造过程。