首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术教程

    数据结构初阶

    "数据结构初阶" 是学习计算机科学的核心基础,它研究的是数据在计算机中如何组织、存储和管理,以便高效地进行访问和修改。掌握数据结构是写出优秀、高效程序的关键。 二、为什么学习数据结构?提高程序效率: 选择合适的数据结构能极大优化程序的运行时间和内存消耗。解决复杂问题: 许多复杂问题(如路径规划、搜索引擎、数据库)都依赖于高效的数据结构。 基本操作 (初阶了解): 添加/删除顶点/边,查找邻接点。典型应用 (概念): 社交网络(顶点是人,边是好友关系)、地图导航(顶点是路口,边是道路)、网络拓扑。四、如何学习数据结构初阶? 理解实现: 学习每种数据结构常见的存储结构(如数组、链表)是如何实现其逻辑结构的。对比分析: 学会对比不同数据结构的优缺点和适用场景。 /最小堆、插入、删除堆顶元素)总结数据结构初阶是构建编程能力的基石。

    39110编辑于 2025-07-04
  • 来自专栏C语言

    初阶数据结构数据结构前言

    1.什么是数据结构数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的 数据元素的集合。 2.什么是算法? 2.如果还有一个派生类继承了这个类,那么如何计算这两个类,各自实例化了多少对象? 3.你了解联合体和结构体吗? 4.如何测试一个机器是大端还是小端? 5.你了解队列和栈吗? 某学长腾讯的面试: 1、自我介绍 2、学习STL具体是怎么开展的? 3、如果一款产品给你怎么检测内存泄露? 4、进程间通信方式,共享内存是怎么实现的,会出现什么问题,怎么解决? 13、写一道算法题 某学姐百度的面试: 1.手写五道题,三道编程题,一道数据库,一道linux 2.数据库的题两问 3.算法了解的如何,插入排序编程 4.说一下IP,TCP,ARP 5.内核是什么 6. 4.如何学好数据结构和算法 4.1 死磕代码 4.2 注意画图和思考 5.数据结构和算法书籍及资料推荐 5.1数据结构学习得差不多了,推荐大家都去把《剑指offer》和《程序员代码面试指南》上的题 做一遍

    20100编辑于 2024-12-13
  • 来自专栏代码飞升

    数据结构初阶】单链表

    想象⼀下这样的场景,假设每节⻋厢的⻋⻔都是锁上的状态,需要不同的钥匙才能解锁,每次只能携带⼀把钥匙的情况下如何从⻋头⾛到⻋尾? 最简单的做法:每节⻋厢⾥都放⼀把下⼀节⻋厢的钥匙。 给定的链表结构中,如何实现节点从头到尾的打印? 2.

    17510编辑于 2025-08-28
  • 来自专栏学习

    数据结构初阶:栈的概念和如何模拟栈?

    今天学习了吗? 一.栈 1.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 2.模拟栈的实现 那么我们如何来实现模拟栈的实现呢? 有两种结构和次类似,链表和数组,但是相比较来说数组的结构更加优良,因为。因为数组在尾上插入数据的代价比较小。

    24510编辑于 2024-09-25
  • 数据结构初阶——顺序表①

    前言 由于这是一篇面向初阶数据结构的文章,所以在这里笔者大致描述数据结构和算法的定义。 什么是数据结构数据结构是计算机存储、组织数据的方式,指相互间存在一种或多种特殊关系的元素的集合。 在有了上述了解后,便可正式学习顺序表了。 顺序表的定义:用一段连续的物理地址以存储数据元素的线性结构。 顺序表特点:逻辑上相邻的数据元素在物理存储结构上也是连续的。 顺序表的操作大可分为四个方向:增 删 查 改 首先任何数据结构都离不开初始化和销毁两个步骤!!! s->a[i] = s->a[i-1]; } s->a[0] = x; s->size++; } 头增加相较尾增的麻烦之处在于每次增加都得将后续数据挪动一次,这难免造成时间的浪费,而之后学习的链表可以很好解决这个问题 ,同时也是各大教材共同选择的新人入门数据结构的第一课时。

    15100编辑于 2025-06-10
  • 数据结构初阶——单链表②

    本文主要讨论第一种即单链表,若读者对第二种链表感兴趣,可以到笔者数据结构分组中查看:【数据结构】带头双向循环链表 那么单链表的结构体代码如下: typedef int DateType; typedef 二、增删查改 数据结构无外乎增、删、查、改四个主要功能,以下给出他们对应的函数。

    16700编辑于 2025-06-10
  • 来自专栏代码飞升

    初阶数据结构】双向链表

    链表分类 8种 (带头/不带头 单向/双向 循环/循环) 最常用两种 单链表(不带头单向不循环链表) 双向链表(带头双向循环链表)

    15910编辑于 2025-08-28
  • 来自专栏YIN_尹的博客

    初阶数据结构】——循环队列

    这篇文章我们来学习一下如何实现循环队列 那力扣上呢有一个对应的题我们可以来看一下: 1. 什么是循环队列? 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前用过的空间。 那现在结点上来直接就开好了,如何判空或者判满呢? 我们继续往下看 此时满了,不能再入数据了,那如何删除数据呢——队头出数据 那就是链表的头删,当然这里我们不会真的删除结点,怎么做呢? 那如何让它实现循环呢? 那也很简单,走到结尾的时候,我们让它回绕到下标0的位置就行了。 判空判满 那数组实现的话如何判空判满呢?

    65210编辑于 2024-04-20
  • 来自专栏C++领域相关博客

    数据结构初阶】顺序表

    正文开始—— 前言: 顺序表是线性表的一种,所以在学习顺序表之前先了解下线性表。 一、线性表 线性表,是一类具有相同特性的数据结构的集合。常见的线性表:顺序表、链表、栈、队列、字符串...

    22310编辑于 2024-10-21
  • 来自专栏技术分享

    初阶数据结构】- 顺序表

    顺序表是一种线性表,线性表是n个具有相同特性的数据元素的有限序列,常见的线性表有:顺序表,链表,栈,队列 👉线性表的逻辑结构:在逻辑上是一条连续的直线。 👉线性表的物理结构:线性表在物理结构上并不是连续的,线性表在物理上存储时通常以数组或链式的结构存储的。

    18710编辑于 2024-10-21
  • 数据结构初阶】--单链表(二)

    前言:上篇博客我们学习了单链表的尾插、头插、尾删、头删四个接口的操作,那么这篇博客将给大家分享剩余单链表的所有的接口,希望大家继续坚持下去 一、单链表的查找 和顺序表的学习一样,要想在指定位置插入或者删除数据首先要找到其数据的位置 SLTPrint(plist); //销毁 SListDestroy(&plist); } int main() { //test1(); test2(); return 0; } 往期回顾: 【数据结构初阶 】--单链表(一) 总结:到此为止单链表我们就已经全部实现完成了,大家还是要养成画图的习惯,并且下去要自己实现一遍,接下来我还会更新双向链表、栈和队列、二叉树等数据结构、希望大家坚持下去,如果文章对你有帮助的话

    21610编辑于 2025-11-19
  • 数据结构初阶】--双向链表(一)

    2、带头或者不带头 带头链中的头节点,不存储任何有效数据,只用来站岗放哨,我们也称之为"哨兵位" 在之前的单链表学习中,我们有时候也会把第一个节点表述为头节点,其实这个称呼是不严谨的只是为了方便理解 3、循环或者不循环 循环链表的尾节点->next指向头节点 今天我们就来学习其中之一的带头双向循环链表 二、带头双向循环链表定义 双向链表中由一个一个的节点组成,这里的节点有三个组成部分,定义我们放在 void test1() { ListNode* plist = NULL; LTInit(&plist); } int main() { test1(); return 0; } 往期回顾: 【数据结构初阶 】--单链表(一) 【数据结构初阶】--单链表(二) 总结:这篇博客的内容较少,主要给大家区分了链表的总类以及各个特性,完成了双线链表的初始化,下篇博客将带着大家完成剩余所有接口,希望大家坚持下去,

    16110编辑于 2025-11-20
  • 来自专栏C++/Linux

    数据结构初阶】--顺序表(一)

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受。 前言:在上篇博客中我们学习了算法复杂度 ,明确了如何计算时间复杂度,能对写出来的代码进行一个评估,那么我们这篇博客将会给大家分享数据结构中顺序表的相关知识点。 一.初识顺序表 --在正式学习顺序表之前,我们先明确一下线性表这个概念 1.1--线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列,线性表是一种在实际中广泛使用的数据结构, 重名命这一块知识点之前在结构体的博客中博主有更详细的讲述过,大家感兴趣的话可以点击下面的链接去看一看,结构体相关的知识点对于我们后续数据结构学习来说还是蛮重要的。 往期回顾: 【数据结构初阶】--算法复杂度的深度解析 【C语言指针超详解(六)】--sizeof和strlen的对比,数组和指针笔试题解析,指针运算笔试题解析 【C语言动态内存管理】--动态内存分配的意义

    17110编辑于 2025-10-29
  • 来自专栏C++/Linux

    数据结构初阶】--双向链表(一)

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受 2.带头或者不带头 带头链中的头节点,不存储任何有效数据,只用来站岗放哨,我们也称之为"哨兵位" 在之前的单链表学习中,我们有时候也会把第一个节点表述为头节点,其实这个称呼是不严谨的只是为了方便理解。 循环或者不循环 循环链表的尾节点不会指向空,而是指向了第一个节点 虽然有这么多的链表结构,但我们实际中最常用的其实还是两种:单链表(不带头单向不循环链表)和双向链表(带头双向循环链表) ,那我们一起来继续学习双向链表吧 void test1() { ListNode* plist = NULL; LTInit(&plist); } int main() { test1(); return 0; } 往期回顾: 【数据结构初阶 】--单链表(一) 【数据结构初阶】--单链表(二) 结语:这篇博客中为大家简单介绍了下双向链表,实现了一下哨兵位头节点的初始化,再次提醒一下,大家一定要注意啥时候用一级指针,啥时候用二级指针。

    13310编辑于 2025-10-29
  • 来自专栏C++/Linux

    数据结构初阶】--单链表(二)

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受 SLTPrint(plist); //销毁 SListDestroy(&plist); } int main() { //test1(); test2(); return 0; } 往期回顾: 【数据结构初阶 】--顺序表(二) 【数据结构初阶】--顺序表(三) 【数据结构初阶】--单链表(一) 结语:在这篇博客中,我们实现了链表的全部接口,最后展现的代码就是完整的单链表实现了。

    16310编辑于 2025-10-29
  • 来自专栏代码飞升

    数据结构初阶】顺序表专题

    顺序表 1.数据结构相关概念 1、什么是数据结构 数据结构是由“数据”和“结构”两词组合⽽来。 **什么是数据? 概念:数据结构是计算机存储、组织数据的⽅式。数据结构是指相互之间存在⼀种或多种特定关系 的数据元素的集合。 数据结构反映数据的内部构成,即数据由那部分构成,以什么⽅式构成,以及数据元素之间呈现的结构。 总结: 1)能够存储数据(如顺序表、链表等结构) 2)存储的数据能够⽅便查找 2、为什么需要数据结构? 通过数据结构,能够有效将数据组织和管理在⼀起。按照我们的⽅式任意对数据进⾏增删改查等操 作。 最基础的数据结构:数组。 【思考】有了数组,为什么还要学习其他的数据结构? 结论:最基础的数据结构能够提供的操作已经不能完全满⾜复杂算法实现。

    18610编辑于 2025-08-28
  • 来自专栏C++/Linux

    数据结构初阶】--快速排序进阶

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享 前言: 在之前的博客中我们实现了递归版本和非递归版本的快速排序,其中递归版本中的找基准的方法我们学习了三种。 二.三路划分 前面实现的两个方式是解决如何找key的问题以及数组接近有序的情况,而三路划分主要是用于处理有大量与Key值相同的元素时的情况。 排序数组 - 力扣(LeetCode) 往期回顾: 【数据结构初阶】--排序(一):直接插入排序,希尔排序 【数据结构初阶】--排序(二)--直接选择排序,堆排序 【数据结构初阶】--排序(三):冒泡排序 ,快速排序 【数据结构初阶】--排序(四):归并排序 【数据结构初阶】--排序(五)--计数排序,排序算法复杂度对比和稳定性分析 结语:本篇博客就到此结束了,大家如果是快速排序掌握的还可以的话,可以好好学习一下这篇博客中的一些优化的方法

    27510编辑于 2025-10-29
  • 来自专栏C++/Linux

    数据结构初阶】--双向链表(二)

    个人主页:@草莓熊Lot 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受 销毁 LTDestory(plist); plist == NULL; } int main() { test1(); return 0; } 特别补充--顺序表和单链表的对比 往期回顾: 【数据结构初阶 】--单链表(一) 【数据结构初阶】--单链表(二) 【数据结构初阶】--双向链表(一) 结语: 在这篇博客中我们实现了双向链表的所有接口,大家下来也可以自己去尝试实现以下,可以通过画图辅助,如果文章对你有帮助的话

    15510编辑于 2025-10-29
  • 来自专栏C++/Linux

    数据结构初阶】--单链表(一)

    个人主页:@草莓熊Lotso 作者简介:C++研发方向学习者 个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的享受 前言:前面我们完成了顺序表的学习以及代码实现,大家一定要自己去实现一遍试试看并且画图理解。那么这篇博客我将会继续为大家分享单链表的定义以及其中打印,尾插,头擦,尾删,头删等接口的实现。 还是一样,先分部分实现,最后展式总的代码---- 一.单链表的概念 --在之前我们学习了逻辑结构和物理结构都是线性的顺序表,但是我们会发现顺序表有以下3个比较明显的缺陷 中间/头部的插入删除,时间复杂度为 SLTPopFront(&plist); SLTPrint(plist); } int main() { //test1(); test2(); return 0; } 往期回顾: 【数据结构初阶 】--算法复杂度的深度解析 【数据结构初阶】--顺序表(一) 【数据结构初阶】--顺序表(二) 【数据结构初阶】--顺序表(三) 结语:在这篇博客中,我们完成了单链表的打印,尾/头插,尾/头删这些接口的实现

    16910编辑于 2025-10-29
  • 来自专栏技术分享

    初阶数据结构】- 栈和队列

    栈是一种线性表,只允许从固定的一端进行数据的插入和 删除,进行数据插入删除的一端叫做栈顶,另一端则叫栈底。 🍃压栈: 栈的插入操作叫做压栈/入栈/进栈。压栈在栈顶 🍃出栈:栈的删除数据叫做出栈。出栈也在栈顶

    14810编辑于 2024-10-21
领券