美文网首页
0x01基础

0x01基础

作者: itime | 来源:发表于2020-04-01 00:20 被阅读0次

数据结构

定义:数据结构(data structure)是带有结构特性的数据元素的集合。数据结构包括数据的逻辑结构、数据的(存储)物理结构和数据的运算三个部分。

数据结构的三个方面的内容
基本数据单位:数据结构中最基本的5个概念: 数据,数据元素,数据项,数据对象,数据结构;其中数据项是数据元素的最小单位。
5个概念的关系图.png
//
//  main.c
//  001--数据结构基本术语
//
//  Created by CC老师 on 2019/8/12.
//  Copyright © 2019年 CC老师. All rights reserved.
//

/*
 数据: 程序的操作对象,用于描述客观事物.
 数据的特点: 1️⃣ 可以输入到计算机 2️⃣ 可以被计算机处理
 
 数据项: 一个数据元素由若干数据项组成
 数据元素: 组成数据的对象的基本单位
 数据对象: 性质相同的数据元素的集合(类似于数组)
 
 结构: 数据元素之间不是独立的,存在特定的关系.这些关系即是结构;
 数据结构:指的数据对象中的数据元素之间的关系
 */
#include <stdio.h>

//声明一个结构体类型
struct Teacher{     //一种数据结构
    char *name;     //数据项--名字
    char *title;    //数据项--职称
    int  age;       //数据项--年龄
};


int main(int argc, const char * argv[]) {
   
    struct Teacher t1;     //数据元素;
    struct Teacher tArray[10]; //数据对象;
    
    t1.age = 18;       //数据项
    t1.name = "CC";    //数据项
    t1.title = "讲师";  //数据项
    
    printf("老师姓名:%s\n",t1.name);
    printf("老师年龄:%d\n",t1.age);
    printf("老师职称:%s\n",t1.title);
 
    return 0;
}

逻辑结构与物理结构:根据视角不同,我们将数据结构分为2种: 逻辑结构与物理结构

1、数据的逻辑结构:逻辑结构(logical structure)是指在数据中数据元素之间的相互关系。数据元素之间存在不同的逻辑关系构成了以下4种结构类型。

1)集合结构:集合的数据元素没有其他关系,仅仅是因为他们挤在一个被称作“集合”的盒子里。



(2)线性结构:线性的数据元素结构关系是一对一的,并且是一种先后的次序,就像a-b-c-d-e-f-g·····被一根线穿连起来。


(3)树形结构:树形的数据元素结构关系是一对多的,这就像公司的部门级别,董事长-CEO\CTO-技术部\人事部\市场部.....。


(4)图结构:图的数据元素结构关系是多对多的。就是我们常见的各大城市的铁路图,一个城市有很多线路连接不同城市。


2、数据的物理理结构:
物理结构(physical structure)也称为存储结构(storage structure),指的是数据的逻辑结构在计算机中的存储形式。数据的存储结构一般可以反映数据元素之间的逻辑关系。分为顺序存储结构和链式存储结构。

(1)顺序存储结构:是把数据元素存放在一组存储地址连续的存储单元里,其数据元素间的逻辑关系和物理关系是一致的

这样的存储方式,实际非常简单. 可以理解为排队占位. 按照顺序,每个一段空间. 我们所学习且使用的数组就是典型顺序存储结构. 当你在计算机建立一个有6个整型数据的数组时,计算机便在内存中找到一片空地.按照一个整型所占空间大小乘以6.开辟一段连续的内存空间. 然后将数据依顺序放在位置上,依次排放.

(2)链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的,数据元素的存储关系并不能反映其逻辑关系,因此需要借助指针来表示数据元素之间的逻辑关系。


小结:逻辑结构是面向问题的,而物理结构就是面向计算机的. 其基本的目标就是将数据以及逻辑关系存储到计算机的内存中.
程序设计中常用的数据结构有:数组(array)栈(stack)队列(queue)链表(list)树( tree)图(graph)堆(heap)散列(hash)

算法

定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

数据结构与算法关系:

数据结构与算法关系

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

算法的特性
算法必须具备几个基本特性: 输入,输出,有穷性,确定性和可行性;

算法设计要求
正确性,可读性,健壮性,时间效率高和存储量低

推导大O阶方法
1、用常数1取代运行时间中所有加法常数;
2、在修改后的运行次数函数中,只保留最高阶项;
3、如果在最高阶项存在且不是1,则去除与这个项相乘的常数;

常⻅见的时间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记做: S(n) = n(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数.
参考
数据结构与算法——从零开始学习(一)基础概念篇
数据结构与算法之美(基础)

相关文章

  • 0x01基础

    数据结构 定义:数据结构(data structure)是带有结构特性的数据元素的集合。数据结构包括数据的逻辑结构...

  • Rust - 数据类型

    基础类型有integerfloatbooleanchar 0x01 integer 类型定义 值定义 包含了八进制...

  • XXE漏洞

    0x01 XXE基础-XML基础语法 XML被设计用来传输和存储数据。 HTML被设计用来显示数据。 0x02 什...

  • Bugku-CTF题解WEB部分

    去训练一下基础! Bugku地址:https://ctf.bugku.com/challenges 0x01 we...

  • 逆向入门基础

    0x01 处理器硬件框架基础 一、8086汇编基础 1、CPU结构CPU由寄存器、算术逻辑单元ALU、 控制器和内...

  • Swift入坑0x01基础

    高屋建瓴 这节的基础内容主要参考官档Swift-The Basics,主要涵盖Swift中的常量,注释,各种变量,...

  • 支付系统0x01: 基础设施 & 初版架构

    date: 2017-11-21 22:10:38title: 支付系统0x01: 基础设施 & 初版架构 一周紧...

  • 热修复Hotfix系列(1)—ClassLoader: 叫爷爷!

    0x01 前言 Android上所有的动态加载方案,包括热部署,热修复,插件化都是以ClassLoader作为基础...

  • Linux提权

    0x00 Linux提权基础命令 0x01 Linux提权工具 Linux内核CVE提权(github):可能会导...

  • 算法与数据结构简介

    0x01 算法 基础技巧:分治、二分、贪心 排序算法:快速排序、归并排序、计数排序 搜索算法:回溯、递归、深度优先...

网友评论

      本文标题:0x01基础

      本文链接:https://www.haomeiwen.com/subject/xmjnuhtx.html