bjfu_data_structure考点整理

9.9
第2章 线性表
1.顺序表:定义、查找、插入和删除算法(算法设计)
2.链表:定义、查找、插入和删除算法(算法设计)
3.循环链表、双向链表的特点,插入和删除代码(选择填空)
4.顺序表链表对比、使用场合(选择填空)
5.线性表的合并算法(算法设计)

第3章 栈和队列
1.栈:顺序栈、链栈的定义、栈满栈空条件、查找、插入和删除算法(选择填空)
2.队列:循环队列、链队的定义、队满队空条件、查找、插入和删除算法(选择填空)
3.顺序栈、链栈、循环队列、链队的应用场景(选择填空)
4.表达式求值(手工实现)
5.栈和递归:斐波那契、阶乘的非递归算法(算法设计)

第4章 数组、串和广义表
1.串:空串和空格串、模式匹配BF算法(算法设计)
2.数组:地址计算、矩阵的压缩存储(选择填空)
3.广义表:GetHead(),GetTail()(选择填空)

第5章 树
1.二叉树的定义和性质、顺序存储和链式存储(选择填空)
2.二叉树的递归创建和遍历算法、计算二叉树结点个数、叶子结点个数、二叉树的高度、宽度等算法(算法设计)
3.线索二叉树的特性及构造方法(选择填空)
4.树和森林的定义、存储结构与二叉树的转换方法(手工画图及转换方法)
5.哈夫曼树及哈夫曼编码的构造算法、带权路径长度的计算(手工画图及计算)

第6章 图
1.图的定义和性质(选择填空)
2.邻接矩阵和邻接表(手工构造)
3.深度优先搜索和广度优先搜索
4.拓扑排序算法、求解最短路径的dijstra算法、构造最小生成树的两种算法(prim和kruskal)

第7章 查找
1.线性表的查找:顺序查找和折半查找算法
2.树表的查找:二叉排序树的定义、二叉排序树的创建、插入、删除和查找算法(手工求解)
3.散列表的查找:两种处理冲突的方法包括开放地址法(线性探测法和二次探测法)和链式地址法。
4.查找算法的分析,平均查找长度ASL的计算方法和时间复杂度分析、不同查找算法的使用场合。

第8章 排序
1.基本概念:稳定性、比较次数、移动次数(选择填空)
2.插入排序:直接插入排序、折半插入排序和希尔排序(手工求解)
3.交换排序:冒泡排序和快速排序(算法设计)
4.选择排序:简单选择排序和堆排序
5.归并排序:2-路归并排序
6.各种排序方法的特点和排序过程,时间和空间复杂度的分析,排序方法“稳定”或“不稳定”的含义。排序算法的实现及适用场合。(选择填空)

第2章 线性表
1.顺序存储的线性表
基本操作:初始化、取值、查找、插入、删除

#define MaxSize 10000
typedef struct SqList{
	int length;
	Book *elem;
}

void init(SqLit &L)
{
	L.elem=new Book[MaxSize];
	L.length=0;
}

9.11
2.单链表的基本操作
初始化、取值、查找、插入、删除、前插法、后插法建立链表

typedef struct LNode{
 int data;
 struct LNode *next;
}*LinkList;

第4章 串、数组和广义表

1.题目:写一个递归的算法,实现字符串的逆序存储,要求空间复杂度为O(1)

9.12
第3章 栈和队列
1.栈的存储结构有顺序栈和链栈,但以顺序栈更为常见
基本操作由初始化、入栈、出栈、读栈顶元素、建栈、判断栈满、栈空等
2.栈的操作的时候,要设置栈底和栈顶指针,base==top是栈空的标志
3.求解阶乘fact(n)的方法

void fact(int n)
{
	if(n==0)
		return 1;
	retrun n*fact(n-1);
}

//汉诺塔问题

4.递归的相关问题
(1)输入一个整数,输出对应的2进制形式
(2)找出从自然数1、2、…、m中任取k个数的所有组合,例如m=5、k=3

5.基于栈的后缀表达式求值

第5章 树

1.基于二叉树的表达式求值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值