IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构(c语言版本) -> 正文阅读

[数据结构与算法]数据结构(c语言版本)

1.基本概念

1.1数据

对客观事物的符号表示,在计算机与科学中是指所有能输入到计算机并被计算机程序处理的符号的总称。

1.2数据元素

是数据的基本单位,在计算机程序中作为一个整体进行考虑和处理

1.3数据对象

是相同性质数据元素的集合,是数据的一个子集

1.4数据结构

是相互间存在一种或多种特点关系的数据元素的集合

?1.4.1集合

除了同属一个集合没有其他关系

1.4.2 线性结构

一对一关系

1.4.3树形结构

一对多关系

1.4.4图状结构或者网状结构

多对多关系

1.5二元组

数据结构形式定义

Data_str=(D,S)

d:数据元素有限集;s:d上关系的有些集

eg:定义复数

complex(C,R)

c,是含有两个实数,{c1,c2}的集合 R={p},p是定义的一种关系{<c1,c2>}不可换位,第一个是实部,第二个是虚部

1.6数据结构

数据结构分为逻辑结构和存储结构

逻辑结构是集合,线性,树形,网状

存储结构分顺序存储和链式存储结构

! 算法的设计取决于逻辑结构,算法实现取决于存储结构

1.7数据类型

是一个值的集合和定义在这个值集上的一组操作的总称

抽象数据类型

又叫ADT。定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关

抽象数据类型和数据类型其实是一个概念

定义:

ADT 抽象数据类型名{

抽象数据对象:<数据对象的定义>

数据关系:<数据关系定义>

基本操作: <基本操作定义>

}ADT 抽象数据类型名

基本操作名(参数表)

初始条件:<初始条件定义>

操作结果:<操作结果描述>

赋值参数仅为操作提供输入值;引用参数以 & 开头,除了提供输入值,还会返回操作结果

eg:

ADT TRyouts{

抽象数据对象:D={e1,e2,e3|e1,e2,e3属于ElemSet}

数据关系:R1={<e1,e2>,<e2,e3>}

基本操作: <基本操作定义>

}ADT TRyouts

InitTriplet(&T,v1,v2,v3)

操作结果:构造三元组

DestroyTriple(&T)

操作结果:摧毁三元组

Put(T,i,&T)

初始条件:三元组存在

操作结果:改变第i元值

......

其他操作类似

} ADT TRyouts

2:算法书写的不一样

(1)预定义和类型

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIVBLE -1

#define OVERFLOW -2

Typedef int Status;返回为结果状态代码

元素类型默认ElemType,可以自定义

(2)基本操作

函数类型 函数名(参数表){

//算法说明

语句序列

}//函数名

(3)赋值语句

?

?

eg

采用动态分配顺序存储结构

Typedef ElemType *Triplet;//由 InitTriplet分配3个存储空间

Status InitTriplet(Triplet &T);

//构造3元组

Status DestroyTriple(Triplet T);

//操作结果:3元组被摧毁

Status Get(Triplet T,int i,ElemType &e);

//初始条件:3元组存在,且i在1~3

//操作结果:用e返回T里面第i个值

Status Put(Triplet &T,int i,ElemType e);

//初始条件:3元组存在,且i在1~3

//操作结果:改变T第i个元素为e

.......

基本操作实现

Status InitTriplet(Triplet &T,ElemType v1,ElemType v2,ElemType v3){




算法和算法分析

1.算法

算法定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令都表示一个或者多个操作;

算法特性:

有穷性,确定性,可行性,输入,输出

算法设计要求

正确性,可读性,健壮性,效率与低存储量需求

算法效率度量

1.事后统计:缺陷~必须先运行算法编程的程序,所得时间统计量依赖于计算机的软件硬件等,容易覆盖算法本身优势

2.事前估计:主要看问题规模,书写语言,机器代码质量

时间复杂度

全称:算法的渐近时间复杂度

看最深层次循环内语句原操作,看它重复次数

空间复杂度

看辅助空间(中间变量)空间不值钱,主要考虑时间复杂度

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 12:01:51  更:2021-09-09 12:02:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:43:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码