面试复习之数据结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/algzjh/article/details/81022700

第一章 绪论

1.1 框架

数据结构:
基本概念(数据、元素、对象和ADT)
逻辑结构(集合、线性、树形和图形)
存储结构(顺序、链式、索引和散列)
算法:
基本概念:算法、特性和评价
算法分析:时间和空间复杂度

1.2 大纲知识点

逻辑结构:集合、线性、树型、图状
存储结构:顺序、链式、索引、散列

1.3 算法的时间复杂度和空间复杂度

算法特性:有穷性、确定性、可行性、输入、输出

struct Node{
    int data;
    Node *nxt;
};

typedef struct Node{
    int data;
    struct Node *nxt;
}Node;

第二章 线性表

顺序存储:顺序表
链式存储:单链表、双链表、循环链表、静态链表(数组实现)

next

prior

定义利用了前驱、后继
查询、插入、删除复杂度:O(n)

InitList(&L);//初始化
Length(L);//求表长
LocateElem(L,e);//按值查找
GetElem(L,i);//按位查找
ListInsert(&L,i,e);//插入
ListDelete(&L,i,&e);//删除操作
PrintList(L);//输出
Empty(L);//判空
DestroyList(&L);//销毁操作

静态链表中的指针是结点的相对地址(数组下标),又称游标。

第三章 栈和队列

线性表操作受限:栈(顺序栈、链栈、共享栈),队列(循环队列、链式队列、双端队列)
线性表推广:数组(一维数组、多维数组),压缩存储、稀疏矩阵

top

栈顶指针:初始-1
栈顶元素S[top]
进栈:++top,S[top]=x;
出栈:S[top],–top
栈空:top=-1,
栈长:top+1
这里栈顶指针指向的就是栈顶元素,有事栈顶指针会指向栈顶元素的下一个位置,初始化top=0。

队列的顺序存储

front

rear

初始状态:front=rear=0
进队:q[rear]=x,++rear
出队:x=q[front],++front;
判空:front==rear

第六章 树与二叉树

层次:根为第一层,
树的高度(或者深度):树中结点的最大层次
结点的深度是从根结点到该结点路径上的结点个数。
结点的高度:从该结点向下走到达叶子结点的最长路径上的结点个数。

树的顺序存储结构中最简单直观的是双亲存储结构
链式存储结构:孩子存储结构(实质是图的邻接表存储结构)
孩子兄弟存储结构:树和森林与二叉树的相互转换。
孩子兄弟表示法有称为二叉树表示法。

满二叉树:所有的分支结点都有左孩子和右孩子,并且叶子结点都集中在二叉树的最下一层。
完全二叉树:各结点的编号与相同深度的满二叉树中相同位置上的结点的编号均相同。

第七章 图

树:结点 图:顶点
在有向图中,通常将称为
图中每条边都可以附有一个对应的数,这种与边相关的数称为权。边上带有权的图称为带权图,也称为
邻接矩阵是图的顺序存储结构
邻接表是图的一种链式存储结构

第一个顶点和最后一个顶点相同的路径称为回路或环。

在路径序列中,顶点不重复出现的路径称为简单路径。
除第一个顶点和最后一个顶点之外,其余顶点不重复出现的回路称为简单回路。

有向树:有一个顶点的入度为0,其余顶点的入度均为1的有向图称作有向树。

图的深度优先搜索(DFS)类似于二叉树的先序遍历。时间复杂度O(|V|+|E|)
图的广度优先搜索(BFS)类似于树的层次遍历,对于邻接表复杂度O(|V|+|E|)
每个顶点均需搜索一次(或入队一次),每条边至少访问一次。

广度优先生成树
深度优先生成树

第八章 排序

展开阅读全文

没有更多推荐了,返回首页