数据结构绪论

一、什么是数据结构

1、数据结构的起源
  • 数据结构不是研究数值计算的这些是数学家应该研究的问题,它是研究计算机存储、组织数据的方式问题的学科,数据结构会影响算法的效率,合适的数据结构可以带来更高的运行或存储效率。

  • 1968年,美国的高纳德(Donald E. Knuth)教授《基本算法》,开创了数据结构课程体系的先河。

  • 程序设计 = 数据结构 + 算法

    • 凭借一句话获得图灵奖的Pascal之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“算法+数据结构=程序”。

    • 这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”——一个公式展示出了程序的本质。

2、数据结构的基本概念

  • 数据(data):所有能输入到计算机中去的描述客观事物的符号
  • 数据项(data item):有独立含义的数据最小单位,也称域(field)
  • 数据元素(data element):数据结构的基本单位,也称节点(node)或记录(record)
  • 数据结构(data structure):数据元素和数据元素关系的集合
  • 算法(algorithm):是对特定问题求解步骤的一种描述,是指令的有限序列
#include <stdio.h>

typedef struct Student
{
    int id;         // 结构成员就是 数据项
    char name[20];
    char sex;
    short age;
    float score;
}Student;

int main(int argc,const char* argv[])
{
    Student stu = { // 结构变量 stu 是数据元素,负责给他初始化的叫数据
        10086,
        "hehe",
        'w',
        23,
        88.5
    };  

    // 数据结构
    Student stus[5] = { 
        {10010,"hehe1",'m',18,92},
        {10011,"hehe2",'w',18,91},
        {10012,"hehe3",'m',17,93},
        {10013,"hehe4",'w',18,96},
        {10014,"hehe5",'m',15,95},
    };  

    // 算法
    for(int i=0; i<5; i++)
    {   
        printf("%d %s %c %hd %g\n",
            stus[i].id,
            stus[i].name,
            stus[i].sex,
            stus[i].age,
            stus[i].score);
    }   
}

3、数据结构的三个方面

  • 数据的逻辑结构:元素之间具有什么关系。
  • 数据的存储结构:元素在内存中如何存储的。
  • 数据结构的运算:数据结构应具有的功能或擅长的功能。

二、数据元素之间的逻辑结构有四种基本类型

  • 集合:数据元素之间除了同属一个集合外没有其它关系。
  • 线性结构:数据元素之间存在一对一的关系,也被称为线性表,简称为表,最具代表性的就是数组、链表。
  • 树型结构:数据元素之间存在一对多的关系,如:族谱关系、组织关系。
  • 图状结构:数据元素之间存在多对多的关系,如:地铁、高铁线路图。

三、数据结构的存储方式

数据结构在计算机内存中的存储包括数据元素的存储和元素关系的表示。

元素之间的关系在计算机中有两种不同的表示方法,顺序表示和非顺序表示。

1、顺序存储结构

数据存储在一段连续的空间中,用数据元素在存储器中的相对位置来表示数据元素的关系。

  • 优点:随机访问方便,访问效率极高。

  • 缺点:插入删除不方便。

2、链式存储结构

结构中的数据元素存放在彼此独立的地址空间中,每个独立的地址空间称为节点。

在每一个数据元素中增加一个存放另一个元素地址的指针,用来表示数据元素之间的关系。

  • 优点:插入删除方便,空间利用率高。
  • 缺点:随机访问不方便,只能由前到后逐个访问。

四、逻辑结构和存储结构的关系

数据结构
顺序 顺序表 顺序树 矩阵
链式 链式表 链式树 邻接表(顺序+链式)

每种逻辑结构采用何种物理结构实现,并没有明确规定,通常根据实现的难易程度,以及在时间和空间方面的要求,选择最适合的物理结构,也不排除复合多种物理结构实现一种逻辑结构的可能。

五、数据结构的运算

  • 1、建立数据结构:create

  • 2、销毁数据结构:destroy

  • 3、从数据结构中删除一个元素:delete

  • 4、把一个元素插入到一个数据结构中:install

  • 5、访问数据结构中的元素:access

  • 6、修改数据结构中的元素:modify

  • 7、对数据结构中的元素进行排序:sort

  • 8、在数据结构中查找元素:query

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.1数据结构的研究内容: 计算机数值计算一般步骤:首先从具体问题抽象出数学模型——》然后设计一个解释此数学模...
    JerryTomLee阅读 350评论 0 0
  • 前言 2016年又是一个全新的开始,每到一年的这个时候,总是颇有感慨。想对过去的一年做一些总结,但又觉得经历和精力...
    VV木公子阅读 2,017评论 5 31
  • 注意:以下文字和图片大部分摘选自《大话数据结构》和严老的《数据结构 C语言》第二版 数据结构 数据结构研究的主要问...
    卖渔翁阅读 429评论 0 1
  • "磨棱角,褪优越,沉下心""不止于心动,更付诸于行动,执行力!“ 引言 开始并行学习一下数据结构,基础太重要了,非...
    那个混子阅读 563评论 0 1
  • 数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构是一门研究 ----非数值计算的程序设计问...
    努力生活的西鱼阅读 571评论 0 0