Bootstrap

【数据结构】基础知识

 

目录

1.1 什么是数据结构

1.2数据

1.3 逻辑结构

1.4 存储结构

1.4.1 顺序存储

1.4.2 链式存储

1.4.3 索引存储

1.4.4 散列存储

1.5 操作


1.1 什么数据结构

数据的逻辑结构以及存储操作

数据结构没有那么复杂,它就教会你一件事:如何更有效的存储数据。

1.2数据

数据:不再是单纯的数字了,而是类似于集合的概念。

数据元素:是数据的基本单位,由若干个数据项组成。

数据项:数据的最小单位,描述数据元素的有用的信息。

数据元素又叫节点

例如:

计算机处理的对象(数据)已不再是单纯的数值:

图书管理中的数据,如下表所列:

1.3 逻辑结构

数据元素并不是孤立存在的,它们之间存在着某种关系(或联系、结构)。元素和元素之间的关系:

线性关系

线性结构 ==> 一对一 ==> 线性表:顺序表、链表、栈、队列

层次关系

树形结构 ==>一对多 ==>树:二叉树

网状关系

图状结构 ==> 多对多 ==>图

例题:

田径比赛的时间安排问题

本题概述:

1.4 存储结构

数据的逻辑结构在计算机中的具体实现

1.4.1 顺序存储

数组:连续存储

特点:内存连续,随机存取,每个元素占用空间较少。

1.4.2 链式存储

通过指针链接

特点:内存不连续,通过指针实现。

结构体:

#include <stdio.h>
struct node
{
    int data;          //数据域:存放节点中的数据
    struct node *next; //指针域:自身结构体类型的指针,指向下一个节点(也就是说保存下一个节点的地址)
};

int main(int argc, char const *argv[])
{
    //定义3个节点
    struct node A = {1, NULL};
    struct node B = {2, NULL};
    struct node C = {3, NULL};
    //连接3个节点
    A.next = &B; //让A的指针域存放B的地址
    B.next = &C;
    //打印3个节点中的数据域(可以通过A找其他节点)
    printf("A:%d\n",A.data);            //A:1
    printf("B:%d\n",A.next->data);      //B:2
    printf("C:%d\n",A.next->next->data);//C:3

    return 0;
}

1.4.3 索引存储

在存储数据的同时,建立一个附加的索引表。

索引存储结构=索引表+数据文件

可以提高查找速度,特点检索速度快,但是占用内存多,删除数据文件要及时更改索引表。

例如:

这样查找一个电话就可以先查找索引表,再查找对应的数据文件,加快了查询的速度。但是如果删除或添加某个数据也要操作对应的索引表。

1.4.4 散列存储

数据存储按照和关键码之间的关系进行存取。关系由自己决定,比如关键码是key, 存储位置也就是关系是key+1。获取关键数据,通过元素的关键码方法的返回值来获取。

存的时候按关系存

取的时候按关系取

1.5 操作

增删改查

;