![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 60
禾子逸
这个作者很懒,什么都没留下…
展开
-
第八章 查找
查找基本概念平均查找长度ASL(Average Search Length)查找失败顺序查找// 顺序查找顺序表int search(int arr[] , int n , int key){ int i; for(i = 0 ; i < n ; ++i){ if(arr[i] == key) return i; } return -1; // 未查找到对应元素}// 顺序查找链表LNode *search(L原创 2021-11-08 14:15:41 · 225 阅读 · 0 评论 -
第七章 排序
排序基本概念稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。直接插入排序(重点)规则:选取一个有序序列,从待排序序列中一个一个选择最小的插入到已经排序好的有序序列中取(类似扑克牌)。// 直接插入排序void insert(int arr[] , int n){ int temp , i , j; for(i = 1 ; i < n ; ++i){ temp =原创 2021-11-08 14:11:32 · 228 阅读 · 0 评论 -
第六章 图
图的基本概念图分为有向图和无向图弧:类似于树中的边,不过是有方向的边入度和出度:略有向完全图:具有n(n - 1)条边的有向图无向完全图:具有n(n - 1) / 2条边的无向图路径:相邻顶点序偶所构成的序列路径长度:路径上面边的个数简单路径:序列中不重复出现的路径回路:路径中第一个顶点和最后一个顶点相同连通图:图中任意两个顶点都连通极大连通子图:连通图自身就是极大连通子图;非连通图中能包含所有顶点的边构成的连通子图生成树:包含必不可少的边权:略邻接矩阵(重点)图的顺序存储结构原创 2021-11-05 09:08:43 · 141 阅读 · 0 评论 -
第五章 树
树:一种一对多的非线性数据结构树的结点数目可以是0,这种树称之为空树树的定义是递归的,由唯一的根节点递归定义出互不相交的子树树的基本概念结点:略结点的度:结点的子树个数 / 分支的个数树的度:一个树中各个结点的最大结点度叶子结点:终端结点,指度为0的结点非终端结点:分支结点,不是叶子结点的结点,即度不为0的结点孩子和双亲:略兄弟:略祖先:从根到某结点路径上所有的结点,都是该结点的祖先子孙:略层次:略树的高度 / 深度:树中结点的最大层次堂兄弟:双亲在同一层次的结点互为堂兄弟森原创 2021-11-05 09:07:46 · 121 阅读 · 0 评论 -
第四章 数组、矩阵和广义表
一维数组和二维数组一维数组:arr[maxsize];二维数组:arr[m] [n];行优先存储:先存满一行,再换下一行存数据列优先存储:先存满一列,再换下一列存数据850中不特别说明,一般视作行优先存储数组例:一个a[5] [5] 的二维数组,a[2] [3]元素前面有多少个元素?矩阵相同的元素或者零元素在矩阵中的分布存在一定规律的矩阵称之为特殊矩阵,反之则称为稀疏矩阵。特殊矩阵:三角矩阵、对称矩阵和对角矩阵。广义表(重点)广义表:线性表的扩展结构,表中元素可再分,有一定的深度。A原创 2021-11-05 09:06:56 · 129 阅读 · 0 评论 -
第三章 栈与队列
栈与队列栈:先进后出(FILO),是一种只能 在一端进行操作的线性表队列:先进先出(FIFO),插入元素在一端(队尾rear),删除元素在另一端(队头front)顺序栈// 顺序栈的简单定义int stack[maxsize];int top = -1; // 栈顶指针// 入栈操作stack[++top] = 1;// 出栈操作x = stack[top--];// 判断栈是否为空if(top == -1) return true;else return原创 2021-11-03 09:23:22 · 100 阅读 · 0 评论 -
第二章 线性表
线性表线性表:具有相同特性数据元素的一个有限序列逻辑特性:直接前驱和直接后继存储结构:顺序存储结构 -> 顺序表 链式存储结构 -> 链表1.顺序表C中可以直接理解为数组特点:1、随机访问;2、占用连续的存储空间插入和删除麻烦,查询特定元素简单2.链表(带头结点和不带头结点)插入和删除简单,查询特定元素麻烦<1>单链表<2>双链表<3>循环单链表<4>循环双链表<5>静态链表(结构体数组)3.顺原创 2021-11-03 09:22:22 · 65 阅读 · 0 评论 -
第一章 绪论
绪论三种传参的区别(难点)1、按值传递int a = 3;void fun(int a){ a++;}int main(){ int a = 3; fun(a); std:cout << *p; // 4}2、按地址传递int a = 3;void fun(int &a){ a++;}3、传入一个指针型变量int a = 3;int *p = &a;int b = 4;void fun(int *&a原创 2021-11-03 09:21:43 · 79 阅读 · 0 评论