![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 95
Baal Austin
愿温柔待以岁月,愿孤独忘之流年
展开
-
二叉树知识点概
树一、树读常考性质节点数 = 总度数+1即除了根节点,每个节点都有一个入度(前驱)度为m的树和m叉树度为m的树第i层至多有mi−1m^{i-1}mi−1个节点(i>=1)m叉树第i层至多有mi−1m^{i-1}mi−1个节点(i>=1)高度为h的m叉树最多有mh−1m−1\frac{m^h-1}{m-1}m−1mh−1个结点高度为h的m叉树至少有h个及结点高度为j,度为m的树至少有h+m-1个结点具有n个结点的m叉树的最小高度为logm(n(m原创 2020-09-18 15:35:51 · 1114 阅读 · 0 评论 -
绪论知识点概
常考算法的时间复杂度数据结构三要素:逻辑结构,物理结构,数据运算可以用抽象数据类型定义一个完整的数据结构与存储结构有关的术语:循环队列(只能顺序存储),哈希表(只能散列存储),单链表(只能链式存储),无关的术语如:栈(可顺序存储也可链式存储)属于逻辑结构的是有序表(与物理结构无关)数据的逻辑结构一定独立于物理结构,但物理结构不独立于逻辑结构链式存储节点间的存储单元地址不连续,但节点内的存储单元地址一定连续算法的定义是问题求解步骤的描述某算法的时间复杂度是O(n2n^2n2),表明该算法的执原创 2020-08-12 12:12:09 · 153 阅读 · 0 评论 -
线性表知识点概
顺序表考察不同顺序表操作的时间复杂度线性表是具有n个数据元素的有限序列。线性表的特性:数据类型相同,有穷性除第一个节点外,每个节点都有一个前驱,除最后一个节点外,每个节点都有一个后继顺序存储的优点是存储密度大,查找方便,缺点是插入删除不方便线性表的顺序存储是一种随机存取的存储方式,利用首地址加下标可直接对值进行读取一个线性表最常用的操作是存取任一指定序号的元素并在最后进行插入删除操作,则利用(顺序表)存储方式可以节省时间。若长度为n的非空线性表采用顺序存储结构,在表的第i个位置插入一个数据原创 2020-08-12 14:19:21 · 2055 阅读 · 0 评论 -
顺序表
动态顺序表#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#define InitSize 10//默认最大长度#define NULLVal INT_MIN;typedef int ElemType;typedef struct { ElemType *data;//指示动态分配数组的指针 int length;//顺序表的最大容量 int MaxSize;//顺序表的原创 2020-07-31 10:35:10 · 227 阅读 · 0 评论 -
链表
单链表#pragma warning(disable : 4996) typedef int ElemType;#include <iostream>using namespace std;typedef struct LNode {//定义单链表节点类型 ElemType data;//每个节点存放一个数据元素 struct LNode* next;//指针指向下一个节点}LNode, * LinkList;//初始化表:无头结点bool InitList_原创 2020-08-01 09:38:43 · 155 阅读 · 0 评论 -
链表和顺序表的区别
逻辑结构都属于线性表,都是线性结构存储结构顺序表(顺序存储)优点:支持随机存取、存储密度高缺点:大片连续空间分配不方便,改变容量不方便链表(链式存储)优点:离散的小空间分配方便,改变容量方便缺点:不可随机存取,存储密度低基本操作创销、增删改 查顺序表(顺序存储)需要预分配大片连续空间。若分配空间过小,则之后不方便拓展容量;若分配空间过大,则浪费内存资源静态分配:静态数组动态分配:动态数组(malloc、free )插入/删除元素要将后续元素都后移/前移时间复杂度O(n),时间原创 2020-08-01 19:02:01 · 1084 阅读 · 0 评论 -
栈和队列知识点概
栈一般考察出栈的顺序出队顺序是否正确判断技巧:先出栈的元素,说明其前面的元素都是依次入栈没有出栈的,所以在它之前入栈的元素,顺序是一定的例:1234依次次入栈,判断输出 4123是否正确显然错误,因为4要先输出,123需要依次入栈,没有出栈,则输出只能为321,所以4先输出的答案只能是4321栈和队列具有相同的逻辑结构栈和队列是(限制存储点的线性结构)链栈的优势:通常不会出现满栈n个元素依次进栈,出栈顺序排列种类1n+1Crn2n\frac{1}{n+1}C^n_r{2n}n+11Crn原创 2020-08-10 17:44:34 · 2941 阅读 · 0 评论 -
栈
顺序栈#include <iostream>#include<stdio.h>#define MaxSize 100typedef int ElemType;typedef struct SqStack { ElemType data[MaxSize]; int top;}SqStack;//初始化void InitStack(SqStack &S) { S.top = -1;}//判空bool StackEmpty(S原创 2020-08-02 08:56:31 · 154 阅读 · 0 评论 -
栈的应用-括号匹配
括号匹配数组模拟栈bool bracketCheck(char str[], int length) { ElemType data[MaxSize]; int top = -1; for (int i = 0; i < length; i++) { if (str[i] == '(' || str[i] == '[' || str[i] == '{') { data[++top] = str[i]; }原创 2020-08-02 14:42:11 · 145 阅读 · 1 评论 -
栈的应用-中缀表达式转后缀表达式及后缀表达式计算
#include <iostream>#include<stdio.h>using namespace std;#define MaxSize 100typedef char ElemType;typedef struct SqStack { ElemType data[MaxSize]; int top;}SqStack;//初始化void InitStack(SqStack &S) { S.top = -1;}//判空bo原创 2020-08-02 21:18:09 · 104 阅读 · 0 评论 -
栈的应用 ——递归
原创 2020-08-02 21:55:45 · 190 阅读 · 0 评论 -
队列
循环队列#include<stdio.h>#define MaxSize 100typedef int ElemType;typedef struct { ElemType data[MaxSize]; int front, rear;}SqQueue;//初始化队列void InitQueue(SqQueue& Q) { Q.rear = Q.front = 0;}//判队列空bool QueueEmpty(SqQueue Q) { return Q.原创 2020-08-02 11:41:41 · 461 阅读 · 0 评论 -
双端队列
1.双端队列:2.输入端受限的双端队列3.输出端受限的双端队列原创 2020-08-02 13:50:23 · 78 阅读 · 0 评论 -
队列的应用
树的层序遍历图的广度优先搜索队列在操作系统中的应用原创 2020-08-02 22:16:03 · 350 阅读 · 0 评论 -
串知识点概(KMP)
BFint BF(char* s, char* t) { int i = 0, j = 0; int n = strlen(s), m = strlen(t); while (i < n && j < m) { if (s[i] == t[j]) { i++; j++; } else { i = i - j + 1; j = 0; } } if (j >= m) { return i - j; } else {原创 2020-08-12 17:28:40 · 709 阅读 · 0 评论 -
串
串的三种构建方法#include<stdio.h>#define MaxLen 100//定长顺序存储表示typedef struct SString { char ch[MaxLen]; int Length;}SString;//堆分配存储表示typedef struct HString { char* ch; int Length;}HString;//块链存储表示typedef struct LString { char ch[4]; struct原创 2020-08-03 20:51:00 · 85 阅读 · 0 评论 -
特殊矩阵的压缩存储
一维数组的存储结构二维数组的存储结构行优先存储列优先存储对称矩阵的压缩存储三角矩阵的压缩存储下三角矩阵行优先上三角矩阵行优先三对角矩阵的压缩存储稀疏矩阵的压缩存储...原创 2020-08-03 18:48:39 · 331 阅读 · 0 评论