学校-数据结构知识点总结
数据结构知识点总结 本文围绕“数据结构基础-线性结构-树形结构-图形结构-查找-排序”的逻辑展开。 一、数据结构与算法基础 1. 数据结构核心概念 基本术语: 数据:客观事物的符号表示(如图像、声音)。 数据元素:数据的基本单位(如一条学生记录)。 数据项:数据元素的不可分割最小单位(如学生记录中的“学号”“姓名”)。 数据对象:具有相同性质的数据元素集合(如所有学生记录)。 数据结构:相互存在特定关系的数据元素集合,形式定义为二元组 DataStructure=(D,S)Data Structure=(D, S)DataStructure=(D,S)(DDD 为数据元素有限集,SSS 为 DDD 上关系有限集)。 数据结构三要素: 逻辑结构:数据元素间的逻辑关系(与存储无关): 线性结构:元素间“一对一”(如线性表、栈、队列、串、数组)。 非线性结构:元素间“一对多”(树)、“多对多”(图)或无明确关系(集合)。 存储结构(物理结构):数据在计算机中的表示,共4种: 顺序存储:逻辑相邻元素物理也相邻(如数组),支持随机存取,插入/删除需移动元素。 链式存储:用...
学校-数据结构
数据结构网课代码整理 注:以下代码基于 C 语言实现,通用数据类型 ElemType 统一定义为 int。 一、线性表 1. 顺序表 1.1 顺序表结构体定义(静态+动态) #include <stdio.h>#include <stdlib.h>#include <stdbool.h>// 通用数据类型定义typedef int ElemType;// 1. 静态顺序表#define MaxSize 50 // 静态顺序表最大长度typedef struct { ElemType data[MaxSize]; // 存储元素的数组 int length; // 当前顺序表长度} SqList;// 2. 动态顺序表#define InitSize 50 // 动态顺序表初始长度typedef struct { ElemType *data; // 指向动态分配数组的指针 int MaxSize; // 数组最大容量 int length; // ...
学校-线性代数
《线性代数》期末复习知识总结 课时一 行列式概念 核心知识点 1. 排列及逆序数 排列:由 1,2,⋯ ,n1,2,\cdots,n1,2,⋯,n 组成的有序数组,称为一个 nnn 元排列。 逆序:大数在小数前,用 τ\tauτ 表示。 逆序数:一个排列的总逆序数。 2. 行列式的定义 (1)二阶行列式 主对角线元素为:a11a_{11}a11,a22a_{22}a22;副对角线元素为:a12a_{12}a12,a21a_{21}a21 定义式:∣a11a12a21a22∣=a11a22−a12a21\begin{vmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{vmatrix}=a_{11}a_{22}-a_{12}a_{21}∣∣∣∣∣a11a21a12a22∣∣∣∣∣=a11a22−a12a21 (2)三阶行列式 注意:每个元素都是不同行不同列。 定义式:∣a11a12a13a21a22a23a31a32a33∣=a11a22a33+a12a23a31+a13a21a32−a13a2...
PTA-学校-数据结构(查找)
1-1 有序数组的插入 分数 8 作者 陈越 单位 浙江大学 本题要求将任一给定元素插入从大到小排好序的数组中合适的位置,以保持结果依然有序。 函数接口定义: bool Insert( List L, ElementType X ); 其中List结构定义如下: typedef int Position;typedef struct LNode *List;struct LNode { ElementType Data[MAXSIZE]; Position Last; /* 保存线性表中最后一个元素的位置 */}; L是用户传入的一个线性表,其中ElementType元素可以通过>、==、<进行比较,并且题目保证传入的数据是递减有序的。函数Insert要将X插入Data[]中合适的位置,以保持结果依然有序(注意:元素从下标0开始存储)。但如果X已经在Data[]中了,就不要插入,返回失败的标记false;如果插入成功,则返回true。另外,因为Data[]中最多只能存MAXSIZE个元素,所以如果插入新元素之前已经满了,也不要插入,而是...
PTA-学校-数据结构(排序)
2-1 直接插入排序 分数 4 作者 DS课程组 单位 临沂大学 本题要求实现直接插入排序函数,待排序列的长度1<=n<=1000。 函数接口定义: void InsertSort(SqList L); 其中L是待排序表,使排序后的数据从小到大排列。 ###类型定义: typedef int KeyType;typedef struct { KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ int Length; }SqList; 裁判测试程序样例: #include<stdio.h>#include<stdlib.h>typedef int KeyType;typedef struct { KeyType *elem; /*elem[0]一般作哨兵或缓冲区*/ int Length;...
PTA-学校-数据结构(图)
1-1 采用邻接矩阵表示法创建无向图 分数 4 作者 王东 单位 贵州师范学院 采用邻接矩阵表示法创建无向图G ,依次输出各顶点的度。 函数接口定义: void CreateUDN(AMGraph &G); 其中 G 是采用邻接矩阵表示的无向图。 裁判测试程序样例: #include <stdio.h>#define MVNum 100 typedef struct{ char vexs[MVNum]; int arcs[MVNum][MVNum]; int vexnum,arcnum; }AMGraph;void CreateUDN(AMGraph &G);int main(){ AMGraph G; int i , j,sum=0; CreateUDN(G); for(i = 0 ; i < G.vexnum ; ++i){ sum=0; ...
PTA-学校-数据结构(树2-2以后)
2-3 有趣的最近公共祖先问题 分数 4 作者 章立晨 单位 浙大城市学院 给出一颗二叉树的后序遍历和中序遍历,你能计算出两个结点的最近公共祖先吗? 输入格式: 第一行给出两个整数N(N<=10000)和M(M<=10000),分别代表二叉树的结点数和我们接下来的询问数。 第二行和第三行分别给出N个整数,每个整数用空格分开,分别代表二叉树的后序遍历和中序遍历。 接下来M行,每行给出两个整数,代表我们要询问的两个结点的编号a和b。 输出格式: 对于每个我们要求的询问: 1.如果a和b中有一个或两个不在树上,输出"ERROR"。 2.否则在一行中输出一个整数,表示a和b的最近公共祖先。 输入样例: 在这里给出一组输入。例如: 3 32 3 12 1 31 22 30 3 输出样例: 在这里给出相应的输出。例如: 11ERROR 解析 #include <iostream>#include <vector>#include <unordered_map>#include <stack>#include &l...
