【计算机基础】数据结构
数据结构
Mr.zwX
2019年进入电子科技大学接触计算机(方向涉及:机器学习/深度学习(CV、NLP、GNN)、时空数据挖掘、一点点开发(部分后端/前端)),2022年在电子科技大学实验室科研,2023年在复旦大学NLP组实习,2023年9月至今,在北京大学人工智能研究院科研(模型加速/压缩、隐私计算)...保持努力,anyway,这个平台是我记录一些乱七八糟计算机笔记的地方,供(记性不好的)自己复习,同时也分享给大家
如需联系:请发邮件至wenxuan225@qq.com
展开
-
【数据结构】图 总结
文章目录一些重点概念图的存储结构(1)邻接矩阵(2)邻接表(3)邻接多重表(4)十字链表一些重点概念无向完全图边数e=n(n−1)2.e=\frac{n(n-1)}{2}.e=2n(n−1).有向完全图边数n(n−1).n(n-1).n(n−1).顶点v的度指的是相关联的边数,TD(v).有向图要分两部分:出度ID(v)和入度OD(v).度数/2是边数简单路径:路径的顶点序列中的顶点各不相同。简单回路:除了第一和最后一个顶点外,不出现相同的顶点。连通图:在无向图中,任意两个顶点都连通,则是连通原创 2020-08-08 22:26:10 · 343 阅读 · 0 评论 -
【数据结构】树与二叉树
1 易错概念树中的度不同于图中的度,树中的度指出度(子树数目),而图中的度指总度数(出+入)叶结点是指度数为0的结点,也称为终端结点树的度指树中所有结点度的最大值2 二叉树的数学性质二叉树的第i层上最多有2n−12^{n-1}2n−1个结点深度为k的二叉树最多有2k−12^{k}-12k−1个结点对任意一棵二叉树T,叶结点数为n0n_0n0,度数为2的结点数为n1n_1n1,则n0=n2+1.n_0=n_2+1.n0=n2+1.证明:总结点=n0+n1+n2.总边数=n1+2n原创 2020-08-01 16:38:58 · 666 阅读 · 0 评论 -
【icoding 数组与广义表】习题
1、矩阵加法题目:实现三元组表示的两个稀疏矩阵的加法。相关定义如下:#define MAXSIZE 100 //假设非零元个数的最大值为100typedef struct { int i,j; //非零元的行下标和列下标,i 和 j 从 1 开始计数,与数学中矩阵元素的编号一致 ElemType e; //非零元的值}Triple;typedef struct { Triple data[MAXSIZE]; // 非零元三原创 2020-07-16 19:22:20 · 1308 阅读 · 0 评论 -
【数据结构】数组与广义表总结
一、数组1、地址计算二维:注意是地址!不是坐标哦,每一个元素都会占用内存。Loc[i][j]=Loc[1][1]+n(i-1)+(j-1).三维:Loc[i][j][k]=Loc[1][1][1]+mn(i-1)+n(j-1)+(k-1)2、下三角矩阵每一行的数量满足等差数列Loc[i][j]=Loc[1][1]+i(i-1)/2+(j-1)同理,上三角矩阵:Loc[i][j]=Loc[1][1]+j(j-1)/2+(i-1)下三角矩阵坐标计算(二维转一维的映射关系):原创 2020-07-16 16:51:09 · 1715 阅读 · 0 评论 -
【数据结构】串(操作及块链串)
文章目录一、串的定义二、串的操作1、串的插入2、串的删除3、串的复制4、串的判空5、返回串长6、串的清空7、串的连接8、串的比较9、求子串函数一、串的定义#define MAXLEN 101typedef struct{ char ch[MAXLEN]; int len;}SString;二、串的操作1、串的插入在s的位置pos前插入t,串分三种情况:s有足够的空间,插入t后剩下的s串还能放下s->len+t.len<=MAXLEN && po原创 2020-07-11 16:57:12 · 1659 阅读 · 0 评论 -
【icoding 栈与队列】习题
1、队列 循环链表表示队列题目:假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),请完成下列任务:1: 队列初始化,成功返回真,否则返回假:bool init_queue(LinkQueue *LQ);2: 入队列,成功返回真,否则返回假: bool enter_queue(LinkQueue *LQ, ElemType x);3: 出队列,成功返回真,且*x为出队的值,否则返回假 bool leave_queue(LinkQueue *LQ, ElemType原创 2020-07-08 10:01:19 · 1695 阅读 · 0 评论 -
【数据结构】限定性线性表——栈与队列 总结
一、顺序栈 LIFO(一)栈的声明#define Stack_Size 100typedef struct{ StackElementType elem[Stack_Size]; int top;}SeqStack;(二)栈的操作1、初始化栈——构造空栈 top == -1void InitStack(SeqStack* S){ S->top=-1;}2、判栈空int IsEmpty(SeqStack* S){ return (S->to原创 2020-07-05 17:13:10 · 333 阅读 · 0 评论 -
【icoding 链表】习题
1、删除指定范围内结点题目:已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度。链表结点定义如下:struct _lnklist{ ElemType data; struct _lnklist *next;};typedef struct _lnklist Node;typedef struct _lnklist *LinkList;函数原型如下:原创 2020-07-05 09:58:11 · 2682 阅读 · 0 评论 -
【icoding 顺序表】习题
1 、删除指定范围题目:设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。函数原型如下:void del_x2y(SeqList *L, ElemType x, ElemType y)相关定义如下:struct _seqlist{ ElemType elem[MAXSIZE]; int last;};typedef struct _seqlist SeqList;答案代码原创 2020-07-04 16:53:38 · 4473 阅读 · 0 评论 -
【线性表】一元多项式的运算
1、建立一元多项式的链式存储结构Polylist polycreate(Polylist head){ Polylist *rear, *new_node; int c,e; rear=head=(Polynode *)malloc(sizeof(Polynode)); cin>>c>>e;//输入系数和指数 while(c!=0){ //建立新项 new_node=(Polynode)malloc(sizeo原创 2020-07-04 16:11:03 · 986 阅读 · 0 评论 -
【数据结构】线性表总结(顺序表 单链表 双链表 循环链表)
文章目录一、线性表的顺序存储顺序存储结构的定义1、线性表的查找2、线性表的插入3、线性表的删除4、顺序表的合并二、线性表的链式存储单链表存储结构声明1、链表的初始化2、头插法建表3、尾插法建表4、按序号查找元素5、按值查找元素6、插入值一、线性表的顺序存储顺序存储结构的定义#define MAXSIZE 1001typedef struct { ElemType elem[MAXSIZE]; int last;//last是下标(始于0)}SeqList;1、线性表的查找//原创 2020-07-04 11:19:42 · 889 阅读 · 0 评论 -
【数据结构】绪论中的知识结构
DS绪论思维导图:以下常用的复杂度关系:即关系:2n>n2>nlogn>n>logn.2^n>n^2>nlog n>n>logn .2n>n2>nlogn>n>logn.K元素独立集问题(从点集S中选出K个元素满足相互独立):检测点集S中不存在一条边O(k2)O(k^2)O(k2),选出1-k个元素子集O(nk)O(n^k)O(nk)....原创 2020-06-28 12:22:34 · 149 阅读 · 1 评论