当前位置: 首页 > article >正文

数据结构-基础

1、概念:

        程序 == 数据结构 + 算法

2、程序的好坏

        可读性,稳定性,扩展性,时间复杂度,空间复杂度。

3、数据结构

        是指存储、组织数据的方式,以便高效地进行访问和修改。通过选择适当的数据结构,

        能够优化计算机程序的时间和空间效率。

4、分类

        逻辑结构

                线性结构(表),非线性结构(树,图)

        存储结构

                顺序存储,链式存储,索引存储,散列存储

5、数据结构:

        顺序表

        链表

        顺序栈

        链式栈

        队列

        树

        哈希表等

6、顺序表

        1、定义类型

                

 7、工程代码目录结构

        1、main.c :主函数程序代码

        2、fun.c :功能程序代码

        3、fun.h : 工程程序代码头文件

8、gdb调试工具

        l        查看代码

        b  行号/函数名         设置断点

        r        运行代码

        n         单步执行

        s        进入函数内部调试

        p   变量名        查看变量内容

        q         退出调试

9、链表

        链表(Linked List)是一种常见的数据结构,用于存储一系列数据元素。与数组不同,链表

        中的元素不是在连续的内存位置上存储,而是通过指针将每个元素链接到下一个元素

        

        链表的基本结构

                链表由一系列节点(Node)组成,每个节点包含两个部分:

                数据部分:存储实际的数据。

                指针部分:存储指向下一个节点的地址(在单链表中),或在双向链表中指向前一个

                和下一个节点的地址。

        

        单向链表(Singly Linked List)

                 每个节点只包含一个指向下一个节点的指针。只有一个方向可以遍历链表。

        

        链表的优缺点

                优点:

                        动态大小:链表的大小是动态的,不像数组需要预先确定大小。

                        高效插入和删除:在链表中插入或删除元素时,无需移动其他元素,尤其是当

                        在链表的头部或尾部插入时,操作非常高效(O(1)时间复杂度)。

                缺点:

                        访问效率较低:访问链表中的某个元素需要从头节点开始逐一遍历,时间复

                        杂、 度为O(n),相比之下,数组的访问是O(1)。

                        额外的内存消耗:每个节点需要额外存储指针,相比数组,需要更多的内存。


http://www.kler.cn/a/536421.html

相关文章:

  • 4. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务设计原则与最佳实践
  • 32.日常算法
  • 自己实现的一个缓存数据库(搞着玩) .net Core/6/8/9
  • 生产环境的 MySQL事务隔离级别
  • GGML、GGUF、GPTQ 都是啥?
  • Ubuntu 20.04配置网络
  • 华为昇腾报:aclrtMemMallocPolicy:ACL_MEM_MALLOC_HUGE_FIRST
  • 三极管的截止、放大、饱和区
  • python2048游戏
  • 分形的魅力:数学与艺术的完美结合
  • C基础(七) 指针和二维数组、数组指针
  • 开源CodeGPT + DeepSeek-R1 是否可以替代商业付费代码辅助工具
  • Node.js 实现简单爬虫
  • RK3568平台开发系列讲解(ConfigFS篇)ConfigFS核心数据结构
  • jvm 篇
  • 匿名函数无法移除事件监听?
  • 使用 Python 编程语言来实现机器学习小项目教程案例
  • 《VB.net之沉淀》
  • springboot+vue导入ruoyi项目的框架
  • SpringBoot启动源码剖析:从入口到容器的诞生
  • 瞎想:控制论、信息论与系统论:未来汽车产品的“三论融合”与深度思考
  • Python3中异常处理:try-finally语句
  • Oracle CDB自动处理表空间不足脚本
  • Hackmyvm Atom
  • 【吾爱出品】 [Windows] 多线程下载器,Ghost Downloader v3.5.1
  • UnityShader学习笔记——动态效果