数据结构与算法学习笔记
文章平均质量分 89
c/c++版实现
九土master
这个作者很懒,什么都没留下…
展开
-
[数据结构]内部排序
排序 shell排序 void ShellInsert(List &L,int n)//升序 { int k=n; for(k=n/2;k>=1;k/=2) { for(int i=k+1;i<n;i++) { int j=i-k; int x=L[i] while(j>0&&L[j]>L[i]) { L[j+k]=L[j]; j-=k; }//while L[j+k]=x; }//for原创 2021-06-03 11:53:28 · 717 阅读 · 2 评论 -
[数据结构]查找
查找 线性查找 折半查找 分块查找 二叉查找 AVL平衡树 定义 左右子树都是平衡树(包括空),且左右子树高度差绝对值不超过1 结点平衡因子BF:结点左子树与右子树之差,只能是-1,0,+1 插入结点后,对最小不平衡经过平衡旋转处理之后的子树深度和插入之前相同,故不影响插入路径上所有祖先结点的平衡度。 旋转处理后,要将根节点和相应子树根节点平衡因子改为0 在平衡的二叉排序树BBST上插入新数据元素e的递归算法 # define LH 1 //左高 # define EH 0 //等高 # define原创 2021-05-30 12:31:34 · 525 阅读 · 4 评论 -
图
图 图的数据结构 暂空 图的表示 常用有邻接表、邻接多重表、十字链表 顺序存储——邻接矩阵 为n*n矩阵,分有向图与无向图。无向图邻接矩阵关于主对角线对称,操作时需对对称位置一起操作。(邻接1,否则0) 网的邻接矩阵中,邻接边赋权值,未邻接边赋值无穷(一般为自定义一个足够大的数) 度:出度及入度分开(有向) #define INFINITY INT_MAX //及代表无穷的一个大数 #define MAX_VERTEX_NUM 20 //图的最大的顶点个数 typedef enum{DG,DN,UDG,原创 2021-04-24 16:32:49 · 388 阅读 · 0 评论 -
树和二叉树
树 先捋一下用栈实现二叉树的先序、中序、后序遍历问题 先序(入栈时即输出) 对于一个结点p: 1.输出,入栈。判断左孩子是否为空 2.若不为空,则p=pL。返1。 3.若为空,栈顶退栈,且p=pr。判断p是否为空: 4.若p为空,则p=栈顶右孩子,栈顶退栈。返4.5 5.若p不为空,返1 6.直到p=NULL且栈为空。(ps:要先把根退栈,再遍历该根的右子树) while (p&&S&&(!isEmpty(S))) { visit(p); S.Push(P); if原创 2021-04-11 12:27:42 · 84 阅读 · 0 评论 -
数组和广义表
数组 数组仍是特殊的线性表 多维数组的地址运算。 PASCAL中,有A(-2,8)[A[-2],A[8]]闭区间。 数组的压缩处理 特殊矩阵 对称阵:n(n+1)/2,k=i(i-1)/2+j 带状矩阵:所有非零元素都对称集中在主对角线附近,带宽为S,则一行有2S+1个元素。(非零端补齐)loc[i,j]=loc[1,1]+[(2s+1)*(i-1)+(j-i)]*L(i,j>=1)。(可以看作下一行i>j部分补齐到本行计算,每(2S+1)即跳过这些到这些后的loc[i,i]对角线。原创 2021-03-25 17:06:33 · 99 阅读 · 0 评论 -
队列和串
队列(FIFO) 插入端:rear队尾 删除端:front队头 双端队列 存储形式 指针实现(设置头结点) 数组实现(地址连续的存储单元) 约定 front和rear指针 初始化建空队列时,front=rear=0 非空队列中,头指针始终指向队列头元素,尾指针始终指向队列尾元素的下一个位置 假溢出 - 移动队列 - 循环队列 插入元素:Q.rear = (Q.rear+1)%maxlength 删除元素:Q.front = (Q.front+1)%maxlength 问题:原创 2021-03-25 16:16:31 · 637 阅读 · 0 评论 -
栈结构
栈(LIFO) 顺序存储 多个栈共用一个存储空间则有对整个栈的操作 应用 判断括号匹配问题原创 2021-03-23 15:19:05 · 107 阅读 · 0 评论 -
线性表
线性表 线性表的存储结构 连续的存储空间(数组) 非连续的存储空间——指针(链表) 游标(连续存储空间+动态管理思想) 线性表的指针实现(c) 基本操作 bug列表 还没找 #include <stdio.h> typedef int ElemType; //此处可以根据需要修改嗷 typedef struct NODE { ElemType *elem; int len; NODE* next; // c中不能在定义的时候初始化为NULL,故记得使用时初始化 }NODE; ty原创 2021-03-18 22:28:38 · 103 阅读 · 0 评论