算法通关村第一关——链表青铜挑战笔记

这篇具有很好参考价值的文章主要介绍了算法通关村第一关——链表青铜挑战笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小白也能学会的链表(C/CPP)

构造链表

链表的基本单元就是节点,也就是说链表是由一个一个节点构成的。

而对于节点来说,里面至少会包含一个指针和一个数据元素,也就是如下图所示:

算法通关村第一关——链表青铜挑战笔记,算法,链表,笔记

其中数据域用来存放数据元素,指针域用来存放指向下一个节点的指针,这样一个一个连接起来的就是链表。如下图所示:

算法通关村第一关——链表青铜挑战笔记,算法,链表,笔记

既然我们知道了节点的结构,那我们也就可以利用代码实现一个结构体作为节点了。

struct ListNode {
    int value; // 数据
    struct ListNode* next; // 指针,指向下一个节点
};

然后,我们就可以利用这个结构体构建出我们需要的链表了。

struct ListNode* BuildLinkList() {
    // 先创建一个头指针,指向第一个节点
    struct ListNode* head = nullptr;
    
    // 创建头结点,并将头指针指向该节点
    struct ListNode* node = new ListNode();
    node->value = 0;
    node->next = nullptr;
    
    // 将头指针指向头节点
    head = node;
    
    // 继续创建节点
    for (int i = 1; i < 5; ++i) {
        struct ListNode* tempNode = new ListNode();
    	tempNode->value = i;
    	tempNode->next = nullptr;
        
        // 将节点加入到链表中
        node->next = tempNode;
        node = tempNode;
    }
    
    // 返回头节点,通过头节点即可使用构建好的链表
    return head;
}

对于创建好的链表,我们应该如何使用呢?接下来,我们就实现一下链表的遍历,同时验证一下通过BuildLinkList创建的链表是否正确。

我们知道,链表的节点是前一个指向后一个的,所以我们只需要从头节点开始,通过拿去next指针,就能依次访问所有的节点,直到最后一个节点。

void TraverseLinkList(struct ListNode* head) {
    // 以头结点作为起始节点遍历整个链表
    struct ListNode* p = head;
    
    // 当p不为空时,证明还有节点没有遍历完
    while (p != nullptr) {
        // 输出当前节点的值
        cout << p->value << endl;
        
        // 找到后一个节点
        p = p->next;
    }
}

通过上面的代码,我们就完成了单链表最基本的定义以及使用,那我们来跑一下看输出什么样的结果。

int main() {
    
    // 创建链表
    struct ListNode* head = BuildLinkList();
    
    // 遍历输出链表中的数据
    TraverseLinkList(head);
    
    return 0;
}

算法通关村第一关——链表青铜挑战笔记,算法,链表,笔记文章来源地址https://www.toymoban.com/news/detail-596871.html

到了这里,关于算法通关村第一关——链表青铜挑战笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法通关村第一关--链表青铜挑战笔记

    开始时间:2023年7月16日20:45:26 什么是链表,链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。 链表的入口节点称为链表的头结点也就是hea

    2024年02月17日
    浏览(44)
  • [Go版]算法通关村第一关青铜——链表青铜挑战笔记

    单向链表图示: 双向链表图示: 环形单向链表图示: 环形双向链表图示: 源码地址: GitHub-golang版本 如果是单向的,需要将当前节点 定位到要插入节点的前一个节点 ,否则一旦过了将无法回头找到前一个节点 如果是双向的,将当前节点 定位到要插入节点的前一个节点、

    2024年02月13日
    浏览(39)
  • 算法通关村第一关——链表青铜挑战笔记(单链表)

    在LeeCode中一般这样创建链表 要注意创建一个变量来遍历,不要把head丢掉了 count position - 1可以方便操作,还能防止下标越界(cur为null)

    2024年02月15日
    浏览(38)
  • 【无标题】算法通关村第一关——链表青铜挑战笔记

    算法通关村第一关——链表青铜挑战笔记 C语言是如何构造出链表的 0.定义节点结构 1.建立头指针 2.建立temp指针 3.将节点连起来 3.1 把p指向temp 3.2 设立循环节点a+temp指向a+temp变为a

    2024年02月15日
    浏览(36)
  • [Go版]算法通关村第一关——链表青铜挑战笔记

    单向链表图示: 双向链表图示: 环形单向链表图示: 环形双向链表图示: 源码地址: GitHub-golang版本 如果是单向的,需要将当前节点 定位到要插入节点的前一个节点 ,否则一旦过了将无法回头找到前一个节点 如果是双向的,将当前节点 定位到要插入节点的前一个节点、

    2024年02月15日
    浏览(46)
  • 算法通关存第一关------链表青铜挑战笔记

    如上代码其实就已经构造出了一个链表。 定义一个Node结点类,他有两个属性var,和next。由于next是Node类型,这时候next又会指向同为Node类型的对象,这个对象也拥有var,和next两个属性,由此构造出一个链表。 文章最后会有构造链表实例,完整代码。   2.1 插入结点 在插入链

    2024年02月15日
    浏览(35)
  • 编程导航算法通关村第一关|青铜|链表基础

    JVM有栈区和堆区 栈区:存引用,就是指向实际对象的地址。。 堆区:存的是创建的对象。 定义 规范的链表定义 LeetCode算法题中常用 遍历 插入 删除 结点 结构遍历 插入 从头插入 从尾插入 从某个值为key的节点后面插入 删除 删除头结点 删除尾结点 按值删除

    2024年02月15日
    浏览(41)
  • 算法通关村|青铜挑战----链表

    前言:数据结构的基础:创建+增删改查 学习目标:单链表的创建+增删改查,双链表的创建+增删改查 数据域+指针域 数据域:当前节点的元素值 指针域:当前节点保存的下一个节点的元素的地址,其中最后一个元素的指针域指向null 标准的面向对象的节点的定义: LeetCode中节

    2024年02月15日
    浏览(35)
  • 算法通关村第一关——链表经典问题之双指针笔记

    基本结构 1.寻找中间结点 2.寻找倒数第k个元素 3.旋转链表

    2024年02月14日
    浏览(39)
  • 算法通关村第一关——链表经典问题之双指针专题笔记

    我一直觉得双指针是一个非常好用的方法,在链表中可以使用,在数组中依然可以,很灵活。 1. 寻找中间结点         用两个指针 slow 与 fast 一起遍历链表。slow 一次走一步, fast 一次走两步。那么当 fast 到达链表的末尾时,slow 必然位于中间。 2. 寻找倒数第K个元素 在这

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包