写在前面:为什么学习C语言数据结构

今天开始,我准备和一起分享学习C语言常用数据结构,这里不求事无巨细的掌握数据结构的方方面面,而是学习编程、考试等实际中常用的重要数据结构,这里以分享可以运行的代码为学习主要方式,因为可运行的代码有时候是最好的老师。

数据结构和算法是十分重要的。C语言+数据结构+算法=C语言程序。考虑下编程的过程:对于一个真实的问题,编程解决步骤往往是:第一步分析问题,第二步找到数学方法“纸面上”解决它,也就是找到“算法”,第三步选择合适的数据结构存放数据,实现“算法”,第四步选择编程语言,编写可执行的代码,实现数据结构和算法。其中第二步很关键,思考算法。

数据结构概念

是指相互之间存在一种或多种关系的数据元素的集合,使用集合二元组来描述有两个要素部分,分别是数据元素集合、数据元素关系集合。

数据结构完整描述可以分为逻辑结构和存储结构,逻辑结构描述本质上的关系,存储结构是根据计算机和编程语言特点实现关系,一种逻辑结构可以有多种存储结构实现,同样,一种存储结构可以被用于实现多种逻辑结构。

逻辑结构分类

逻辑结构对应数据结构中数据元素的关系,简单可以分为集合、线性、树型、图状四类。

  • 集合:最松散的关系,相当于空关系,只要数据元素取值属于同一个集合即可。
  • 线性:一对一关系,数据元素逻辑上结构是排列的一条“线”,有先后次序。
  • 树型:一对多关系,存在一个父亲结点和多个孩子结点,逻辑上是一颗“树”。
  • 图状:多对多关系,数据元素可以有任意的对应关系,形似一张“网图状”。

存储结构分类

存储结构是数据结构的逻辑结构在计算机中的物理实现表示,因此也可以称为物理结构,简单分为2大类:

  • 顺序存储方式:数据按照顺序在内存中存放,数据的逻辑顺序和计算机物理内存地址顺序对应,C语言实现可以使用数组、动态内存分配的顺序表表示。
  • 链式存储方式:数据可以在内存中随机存放,同时数据结点中通过一个指针将数据按照逻辑顺序串接起来,例如链表。

算法

  • 算法是对特定问题的求解步骤的描述,是通用的数学意义上的问题求解。
  • 程序是算法在计算机中的一种实现,需要使用特定的编程语言和计算机指令。
  • 算法常见时间复杂度大小关系:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn),其中O(1)表示常量时间,和问题规模无关。
  • 算法空间复杂度:是指算法需要除数据元素之外的辅助空间大小,O(1)表示只需要固定的辅助空间,和问题规模无关,原地工作。

对比理解

1.逻辑结构和存储结构:数据结构的两个重要方面,一种逻辑结构可以有多种存储结构实现,存储结构实现和计算机硬件特性、编程语言特性相关,不同的存储结构实现,其数据结构最终的处理效率是不同的,各有优劣。

2.数据结构和算法:这两个概念也是密切相关,算法是对问题的求解,必然涉及到数据处理,因此需要选择数据结构存放数据。使用不同的数据结构直接影响算法对于问题的处理效率。一个可以用计算机解决的实际问题,需要同时选择一个合适的算法和数据结构,最终形成完整的可执行程序。

3.数据结构作用主要是处理数据,因此基本上每种数据结构都需要提供增加、修改、删除、查询、显示数据等通用功能,根据数据结构的具体存储结构,其实现的过程和效率均不相同。

其实做为一个学习者,有一个学习的氛围跟一个交流圈子特别重要这里我推荐一个C/C++基础交流583650410,不管你是小白还是转行人士欢迎入驻,大家一起交流成长。

中常用的数据结构_C语言实现常用数据结构:基本概念(第0篇相关推荐

  1. c语言必背数据结构_C语言实现常用数据结构:简要一览(第1篇

    线性表 最简单的一种数据结构,具有相同类型的数据元素组成的序列.顺序表.链表是其两种简单实现. 备注:数组也可以算一种简单的线性表. 链表可以分为:带头结点的简单链表 不带头结点的简单链表静态链表 循 ...

  2. c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

    「今天是学习C语言第 148 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」 # 静态链表 使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系.实现要点: 1.数组 ...

  3. aes算法c语言实现_C语言实现常用数据结构:Dijkstra最短路径算法(第18篇)

    「今天是学习C语言第 161 天」 纸上学来终觉浅,绝知此事要躬行.-- 陆游「冬夜读书示子聿」#题外话算法学习重点是学习如何编程使用它. # Dijkstra算法 Dijkstra算法,中文译名迪杰 ...

  4. c语言程序设计中常用语句,单片机C语言编程常用语句

    <单片机C语言编程常用语句>由会员分享,可在线阅读,更多相关<单片机C语言编程常用语句(22页珍藏版)>请在人人文库网上搜索. 1.C51程式设计一般陈述式摘要,1,C51 S ...

  5. 数据结构_C语言_实验二_树 ——还原二叉树

    文章目录 实验二 树 1. 实验目的 2. 实验内容 3. 实验要求 4. 实验过程 (1) 问题描述 (2) 数据结构与算法设计 (3) 程序实现 (4) 实验结果 (5) 实验总结 实验二 树 - ...

  6. 数据结构c语言函数大全,数据结构习题库(c语言版).doc

    数据结构习题库(c语言版) 第一章 绪 论 一.基本内容 数据.数据元素.数据对象.数据结构.存储结构和数据类型等概念术语的确定含义.抽象数据类型的定义.表示和实现方法.描述算法的类C语言.算法设计的 ...

  7. 数据结构C语言版字符串,数据结构c语言版

    数据结构c语言版是一款非常使用的数据结构课程的编写和教材:它也可将软件作为学习数据结构.算法C程序设计的参数教材,只需要用户学习该软件之后,就算遇到在繁杂的代码也可以清晰的写出来,本书的钱半部分主要介 ...

  8. c语言堆栈基本代码入栈出栈_C语言实现常用数据结构:栈-顺序栈实现(第6篇)...

    栈 栈是一种特殊的线性表,其特性是仅能在表尾进行插入或删除的操作,栈中元素的操作是按照后进先出的原则进行,因此栈又称为后进先出线性表(Last In First Out,LIFO数据结构).栈顶:表尾 ...

  9. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数

    #include // 宏函数 三目运算符 #define MAX(A, B) A>B?A:B //宏函数 多行 添加\直接回车 #define LOOP(FROM, TO, CONTENT)\ ...

最新文章

  1. 好插件让你事半功倍!【资源篇】
  2. 『原创』网站测试计划模板
  3. Python学习笔记四(Python OS模块)
  4. 互联网巨头们的广州“云”棋局
  5. docker容器内开启22 ssh_在docker容器中开启ssh服务 (未成功有时间再验证)
  6. 如何处理Docker错误消息:please add——insecure-registry
  7. java 反射 hold_Go进阶:反射3定律
  8. validation problems were found problem cvc-complex-type.2.4a
  9. HDU2189 来生一起走【完全背包】
  10. wildfly10 配置mysql_WildFly配置MySql驅動
  11. P4692 [Ynoi2016]谁的梦
  12. win10的 程序员计算器
  13. Xcode打包ipa的步骤(简述)
  14. 使用ALLHiC基于HiC数据辅助基因组组装
  15. 蓝桥杯算法训练—关联矩阵
  16. myeclipse把选中的字母转换成大写或者大写转小写
  17. Chasedb1--视网膜血管分割数据集
  18. 建立适当的索引(ZZ)
  19. 计算机考研最易985,2020考研:盘点那些易考的985院校
  20. 【MySQL技术内幕】49-事务的实现之group commit

热门文章

  1. linux cp命令 前面,盘点Linux命令之Linux cp命令使用大全
  2. 网页里显示访问的那台服务器,在web服务器中把网页放在那里,才能被访问
  3. js密码强度正则表达式_这20个正则表达式,能让你少写100行代码
  4. 2017-07-18日看登录日志,显示十条:最早的是:2014-04-07 17:09,应该就是注册日期吧
  5. mysql源码如何解析where字句_MySQL解析器源码分析--对select语句中子查询处理逻辑的分析(一)...
  6. php 判断是否是单词,php – 检查字符串是否包含任何单词
  7. qt 删除文件夹_Qt 贪吃蛇制作(含源码)
  8. java请求怎么获取token,如何获取变量token的值
  9. ae中合成设置的快捷键_AE项目工作流程讲解及项目与合成设置
  10. php xml对象解析_php解析xml 的四种简单方法(附实例)