408数据结构笔记(2023更新中...)

408 知识点笔记——计网(传输层、应用层) 5 传输层 【TCP 是面向连接的,但 TCP 使用的 IP 却是无连接的】 【常见的几个熟知端口】 熟知端口(保留端口):数值一般为 0 ~ 1023 【TCP 建立连接和释放连接】 △☼▽ 分析:C,SYN = 1,ACK= 1,ack = 11221,seq 任意 分析:D,A 发送的报文段的序号为 300 ~ 306,B 在对该报文的确认报文段中的 ACK 应该为 307,又由 A 发送的报文段的确认号可以知道,A 期待下一个收到的 B 的报文段序号为 101,故此时 B 的确认报文 阅读详情


前言

打工人上班摸鱼必备!!!


第一章:绪论

1.1数据结构的基本概念

1.数据元素、数据项:数据元素是数据的基本单位,通常作为一个整体进行处理和考虑。
2.一个数据元素可由若干数据项组成,数据项是构成数据元素的不可分割的最小单位。
3.数据对象:具有相同性质的数据元素的集合,是数据的一个子集。(强调相同性质)
4.数据结构:相互之间存在一种或多种特定关系的数据元素的集合。(强调相互关系)
同样的数据元素,可组成不同的数据结构;
不同的数据元素,可组成相同的数据结构。

1.2数据结构三要素


一、逻辑结构
1.集合:各个元素同属一个集合,别无其他关系。
2.线性结构:数据元素之间是一对一的关系。除了第一个元素,所有元素都有唯一前驱;除了最后一个元素,所有元素都有唯一后继。
3.树形结构:数据元素之间是一对多的关系
4.图状结构:数据元素之间是多对多的关系

二、数据的运算
针对某种逻辑结构,结合实际需求,定义基本运算
1.查找第i个元素
2.在第i个位置插入新的数据元素
3.删除第i个位置1的数据元素

三、物理结构(存储结构)
1.顺序存储:把逻辑上相邻的数据元素存储在物理位置上也相邻的存储单元中。
2.链式存储:逻辑上相邻的元素在物理位置上可以不相邻,借助指针来表示元素之间的存储关系。
3.索引存储:在存储元素信息的同时,还建立附加的索引表。
4.散列存储:根据元素的关键字直接计算出该元素的存储地址,又称哈希(Hash)存储。

1.若采用顺序存储,则各个数据元素在物理上必须是连续的;若采用非顺序存储,则各个数据元素在物理上可以是离散的。
2.数据的存储结构会影响存储空间分配的方便程度。
3.数据的存储结构会影响对数据运算的速度。

运算的定义是针对逻辑结构的,指出运算的功能;
运算的实现是针对存储结构的,指出运算的具体操作。

四、数据类型、抽象数据类型
数据类型是一个值的集合和定义在此集合上的一组操作的总称。
1.原子类型:其值不可再分的数据类型,如bool、int类型。
2.结构类型:其值可再分解成若干分量的数据类型。

1.3 算法的基本概念

一、算法的特性
1.有穷性
2.确定性:算法中的每条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
3.可行性
4.输入、输出:零个或多个输入;一个或多个输出。

二、“好”算法的特质
1.正确性
2.可读性
3.健壮性
4.高效率和低存储量需求

三、算法的时间复杂度
1.加法规则:多项相加,只保留最高阶的项,且系数变为1。
2.乘法规则:多项相乘都保留。

阶数排序

  • 顺序执行的代码只会影响常数项,可以忽略。
  • 只需挑循环中一个基本操作分析它的执行次数与n的关系即可。
  • 有些问题要考虑不同情况下的复杂度。

在这里插入图片描述

四、算法的空间复杂度
程序运行时的内存需求:
1.无论问题规模怎么变,算法运行所需的内存空间都是固定的常量,空间复杂度为

S(n) = O(1)

又称算法原地工作——算法所需内存空间为常量
2.算法运行所需内存空间与问题规模相关,如问题规模为n,定义一维数组 flag[n] 或二维数组 flag[n][n]

S(n) = O(n)  # flag[n]
S(n) = O(n²)  # flag[n][n]

3.函数递归调用也会带来内存开销,函数调用栈中的每一层都需要存储函数中的变量,即

空间复杂度 = 递归调用的深度

第二章:线性表

在这里插入图片描述

2.1线性表的定义

线性表是具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。

  • 相同数据类型表示每个数据元素所占空间一样大。
  • 除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继。

2.2线性表的基本操作

  • InitList(&L):初始化表。构造一个空线性表L,分配内存空间
  • DestroyList(&L):销毁操作。释放内存空间
  • ListInsert(&L,i,e):插入。在表L的第i个位置上插入指定元素e
  • ListDelete(&L,i,&e):删除。删除表L的第i个位置的元素,并用e返回删除元素的值
  • LocateElem(L,e):按值查找。在表L中查找具有给定关键字值的元素
  • GetElem(L,i):按位查找。获取表L中第i个位置元素的值
  • Length(L):求表长。返回线性表L的长度,即L中数据元素的个数
  • PrintList(L):输出。按前后顺序输出线性表L的所有元素值
  • Empty(L):判空。若L为空表,则返回true

Tips:
1.对数据的操作——创销、增删改查
2.C语言函数的定义—— <返回值类型>函数名(<参数1类型>参数1,<参数2类型>参数2,…)
3.什么时候要传入“&”——引用类型,对参数的修改结果需要“带回来”

2.3顺序表的定义

• 顺序表:用顺序存储的方式实现线性表。
• 顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元 的邻接关系来体现。

2.3.1 顺序表的实现

1.静态分配:存储空间是静态的

#define MaxSize 10           //定义最大长度
typedef struct{
   
                 
	ElemType data[MaxSize];  //用静态的数组存放数据元素
	int length;              //顺序表的当前长度
}SqlList;                    //顺序表的类型定义(静态分配方式)

﹡基本使用

#include <stdio.h>
#define MaxSize 10
typedef Struct{
   
   
	int data[MaxSize];
	int length;
}SqlList;

//基本操作——初始化一个顺序表
void InitList(SqlList &L){
   
   
	for(int i=0; i<MaxSize; i++)
		L.data[i]=0;	//可省略(若未设置数据元素初始值,可能会被内存中的脏数据覆盖)
	L.length=0;		//不可省略,避免数据元素被内存中脏数据覆盖
}

int main()
{
   
   
    SqlList L;	//声明一个顺序表
	InitList(L);	//初始化顺序表
	//后续操作
   return 0;
}

2.动态分配

#define InitSize 10          //顺序表的初始长度
typedef struct{
   
                 
	ElemType *data;  		 //指示动态分配数组的指针
	int MaxSize;			 //顺序表的最大容量		 
	int length;              //顺序表的当前长度
}SeqList;                    //顺序表的类型定义(动态分配方式)

tips:
C——malloc、free函数(动态申请·和释放内存空间)

 L.data = (ELemType*)malloc(sizeof(ElemType) * InitSize);

malloc函数返回一个指针,需要强制转型为所定义的数据元素类型指针

C++——new、delete关键字

*基本使用

#include <stdlib.h>			//包含malloc和free函数的头文件
#define InitSize 10          //顺序表的初始长度
typedef struct{
   
                 
	ElemType *data;  		 //指示动态分配数组的指针
	int MaxSize;			 //顺序表的最大容量		 
	int length;              //顺序表的当前长度
}SeqList;                    //顺序表的类型定义(动态分配方式)


void InitList(SeqList &L){
   
   
	//用malloc函数申请一片连续的内存空间
	L.data=(int *)malloc(InitSize*sizeof(int));
	L.length=0;
	L.MaxSize=InitSize;
}

//增加动态数组的长度
void IncreaseSize(SeqList &L, int len){
   
   
	int *p=L.data;
	L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));		//申请一片新的内存空间
	for(int i=0; i<L.length; i++){
   
   
		L.data[i]=p[i];		
408考研大纲-计算机组成原理(2023) 408考研大纲—计算机组成原理(2023) 阅读详情

相关推荐

计算机408考研笔记汇总

一:相关博文 考研专业课(408)书本资料选择复习规划_刘鑫磊up的博客-CSDN博客_考研408资料 王道和天勤的书习题视频课程选谁 - 知乎 二:平台 对于考计算机408比较出名口碑不错的的机构有:王道、天勤、爱启航、文都、新东方 获取资源途径:哔哩哔哩、中国大学MOOC(慕课)_国家精品课程在线学习平台、其他公众号等平台 三:有帮助的公众号、网站 Document 408考研笔记与总结.md · halo/考研笔记 - Gitee.com 一烫:经验贴 四:我的笔记 ...

刘鑫磊 2万+

【专栏必读】王道考研408计算机组成原理万字笔记使用说明及章节导航

本文是为准备408王道计算机组成原理考试的学生精心整理的万字笔记,涵盖了从计算机系统概述、数据表示和运算到存储系统、指令系统等多个章节的重点内容。本文强调了学习笔记的重要性,并分享了学习建议,如按视频课逻辑记录,建立学科框架。笔记详细记录了每章的关键知识点,包括存储器、CPU、I/O系统的工作原理,还附带了习题和思维导图,旨在帮助考生高效复习。

快乐江湖的博客 9万+

DDPG算法实战:用Python一步步实现深度强化学习中的连续动作控制

本文详细介绍了DDPG算法在深度强化学习中的连续动作控制应用,通过Python和PyTorch实现从零构建智能体。内容涵盖环境搭建、网络架构设计、经验回放、OU噪声实现及训练流程优化,帮助开发者掌握DDPG在机械臂控制等场景的核心技术。

weixin_30335575的博客 406

ESP8266入门(一)固件烧录及常见问题分析

为了实现对数据的远程收集和分析,偶然间发现了esp8266这个模块,对此进行了深入的学习,可是在学习之初遇到了大量的问题,这个系列文章就为大家讲讲我遇到的坑以及解决办法,还有esp8266如何连上oneNet云平台的方法。因为我用的是esp8266nodemcu,可以直接连接usb进行烧录,如果用模块的话接线就比较麻烦,可以去搜搜看.

Jerryxuzherui的博客 8936

Ubuntu22.04下RTX2080显卡驱动、CUDA、cuDNN保姆级避坑安装指南(实测有效)

本文提供Ubuntu22.04下RTX2080显卡驱动、CUDA和cuDNN的详细安装指南,涵盖前期准备、驱动安装、CUDA版本选择、cuDNN配置及常见问题解决。通过实测有效的步骤和优化建议,帮助用户快速搭建稳定的深度学习环境,避免常见陷阱。

weixin_42540248的博客 278

命令行执行YOLO训练命令报错:1.PermissionError: [WinError 5] 拒绝访问 2.OMP: Error#15: Initializing libiomp5md.dll...

(已解决!)报错:1.PermissionError: [WinError 5] 拒绝访问 2.OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.

Gpengyuyan的博客 1118

SAP 实施:Waterfall vs. Agile —— 一场“结构性矛盾“的深刻比较先说结论:在 SAP 世界里,这从来不是“谁更好“的宗教问题,而是“你的项目 DNA 是什么“的战略选择。​

SAP 实施:Waterfall vs. Agile —— 一场"结构性矛盾"的深刻比较 先说结论:在 SAP 世界里,这从来不是"谁更好"的宗教问题,而是"你的项目 DNA 是什么"的战略选择。​ SAP 早已用 SAP Activate​ 给出了官方态度——它不是纯 Agile,也不是回头去搞旧 Waterfall,而是一个带质量门的混合架构。 1. 先回到本质:两者解决的是不同维度的风险 维度 Waterfall(传统 ASAP 路线)​ Agile(SCRUM/Kanban 式迭代)​

金牌架构师 326

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

【WorkBuddy专栏40】从「帮你干活」到「帮你创造」——WorkBuddy设计创意功能深度拆解

AI人人懂 1260

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 432

用 CDS View I_APARToleranceGroup 管理客户与供应商收付差异容差:配置语义、字段解读与 ABAP 落地实践

财务共享服务中心常面临小额差异处理的挑战,SAP通过"客户/供应商容差组"机制实现自动清账规则配置。CDS视图I_APARToleranceGroup将配置数据转化为可查询维度,包含宽限天数、固定现金折扣等关键业务参数。该视图支持按公司代码和容差组查询差异处理策略,可用于报表开发、主数据校验和接口合规检查,帮助财务团队高效管理海量小额交易差异,减少手工操作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 116

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

下一篇: Python——回溯算法
摸鱼必备
博客等级 码龄5年 9粉丝 3原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值