欢迎光临
我们一直在努力

嵌入式学习——数据结构基本概念和线性表

数据结构的基本概念

1、数据:客观的现实在计算机中的符号表示

2、数据对象:性质相同的元素集合

3、数据元素:具有一定意义的基本单位,被计算机整体处理

4、数据项:不可再分的最小数据单位

数据 > 数据对象 > 数据元素   > 数据项

数据结构研究的是数据元素之间的关系

数据结构的三要素:逻辑结构、物理结构、算法

数据元素之间的关系

逻辑结构:逻辑上的联系

常见的逻辑关系:

         集合——数据元素之间没有必然联系,大家处于一个集合中

         线性(一对一)——除了第一个元素和最后一个元素之外,其余元素都只有一个前驱和后继

         树(一对多)—— 目录结构的关系

         图(多对多)——地图

物理结构:存储到计算机中的结构

计算机本身的存储就是线性的

存储结构:

            顺序结构:用一片连续内存空间存放数据——对应到C语言是数组(有序性、单一性、连续性),数组也是一种数组结构:顺序表。

              特点:1、访问数据方便,时间复杂度O(1)    2、插入和删除数据不方便,时间复杂度O(n)

            链式结构:可以用来表示一种线性关系,彼此之间必须联系起来。通过指针指向下一个数据元素。

                特点:1、访问数据需要遍历O(n)   2、插入和删除方便O(1)

            索引结构:找——索引表(有序)——数据

            散列(哈希)结构:找key——散列函数

算法——解决问题的步骤

不同的数据结构决定了对应的算法不同

算法的特性:输入、输出、有穷性、确定性、可行性

设计算法:正确性、健壮性、可读性、时间和空间效率

算法的好坏度量:

          算法效率:时间复杂度

                            空间复杂度

线性表

顺序表:以顺序结构存储的线性表(C语言中就是数组)

链式表:以链式结构存储的线性表

链式表

一个节点中:数据域、指针域

首节点:存放第一个有效数据的节点

尾节点:存放最后一个有效数据的节点,尾节点指针域为NULL

头节点:数据部分不关心,只是为了方便操作链表

数据结构的描述

      struct   node

    {

           int data;  要处理的数据类型为int型

           struct node *pnext;      指向下一个节点

    }          

相关算法

1、创建空链表

2、插入数据

3、查数据——遍历打印,逐个节点访问

4、链表的有效长度——有效节点的个数(头节点不算)

5、找值

6、改值

7、删除

赞(0)
未经允许不得转载:171主机测评 » 嵌入式学习——数据结构基本概念和线性表
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址