151601学期课程知识点回顾数据结构与算法v10.docx

上传人:b****9 文档编号:25458911 上传时间:2023-06-09 格式:DOCX 页数:13 大小:20.53KB
下载 相关 举报
151601学期课程知识点回顾数据结构与算法v10.docx_第1页
第1页 / 共13页
151601学期课程知识点回顾数据结构与算法v10.docx_第2页
第2页 / 共13页
151601学期课程知识点回顾数据结构与算法v10.docx_第3页
第3页 / 共13页
151601学期课程知识点回顾数据结构与算法v10.docx_第4页
第4页 / 共13页
151601学期课程知识点回顾数据结构与算法v10.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

151601学期课程知识点回顾数据结构与算法v10.docx

《151601学期课程知识点回顾数据结构与算法v10.docx》由会员分享,可在线阅读,更多相关《151601学期课程知识点回顾数据结构与算法v10.docx(13页珍藏版)》请在冰豆网上搜索。

151601学期课程知识点回顾数据结构与算法v10.docx

151601学期课程知识点回顾数据结构与算法v10

1概述

1.1课程介绍

为什么要学数据结构与算法

怎么学数据结构与算法

1.2数据结构

什么是数据结构

什么是逻辑结构,有哪些逻辑结构(线性、树、网络、集),各逻辑结构分别有什么特点。

什么是存储方式(物理结构),有哪些存储方式(顺序存储、链式存储)。

有哪些常见数据操作(增删查改、排序等)

1.3算法

什么是算法。

算法与数据结构有什么关系。

怎么评价算法的好坏。

软件质量评估指标体系

算法效率的度量方法:

什么是时间复杂度,什么是空间复杂度,如何确定算法的时间复杂度。

2线性表

2.1线性表概述

什么是线性表,线性表的基本操作

2.2顺序表

2.2.1什么是顺序表

什么是顺序表

根据下标和顺序表中元素类型,计算顺序表中某元素的地址

2.2.2顺序表的数据结构描述

顺序表结构描述时,必须的几点要素。

如何用c语言描述顺序表。

2.2.3顺序表的算法思路、实现和效率分析

顺序表的基本算法(操作):

初始化、求表长、增加元素、删除元素、查找元素(按下标查、按值查)。

懂得算法思路,和算法实现,懂得分析算法效率(时间复杂度和空间复杂度,重点是时间复杂度)。

2.2.4Java中的顺序表

Java中顺序表结构有基本数组和ArrayList类,懂得ArrayList类的基本结构,懂得用ArrayList类自带的方法对其中元素增删查改。

懂得用Iterator和ListIterator接口访问ArrayList。

如何根据不同情况,在Java的世界中,选择合适的顺序表,即基本数组或ArrayList。

2.3链表

2.3.1什么是链表

什么是链表,懂得区分顺序表和链表在数据结构上的差异

2.3.2链表的数据结构描述

链表结构描述时,必须的几点要素。

如何用c语言描述链表

带头结点和不带头结点的链表

2.3.3链表的算法思路、实现和效率分析

链表的基本算法(操作):

初始化、求表长、增删查改(查包括按下标和按值查)。

懂得算法思路、算法实现,并懂得分析算法效率(时间和空间复杂度,重点是时间复杂度)。

用头插法和尾插法创建链表(带头结点或者不带头结点)

2.3.4循环链表和双向链表

单向和双向链表、循环和不循环链表的各自特点

双向链表结构描述时,必须的几点要素。

如何用c语言描述双向链表

双向链表的前插和删除算法的思路和c语言实现

Oracle索引B*树结构中的双向链表

2.3.5Java中的链表

Java中的链表:

LinkedList类。

懂得LinkedList类的基本结构(带头结点的双向循环链表)。

懂得用LinkedList类自带的方法对其中元素增删查改。

懂得用Iterator和ListIterator接口访问LinkedList。

如何根据不同情况,在Java的世界中,选择合适的线性表,即基本数组、ArrayList、或LinkedList。

2.3.6顺序表和链表的比较

增加结点时,顺序表和链表的时间效率(即时间复杂度)分析

顺序表和链表的综合比较(包括存储方法、根据index查找/更新的时间效率、根据值查找/更新的时间效率、定位后增删的时间效率、空间效率)

3栈与队列

3.1栈

3.1.1什么是栈

什么是栈(我们身边的栈)、什么是顺序栈、什么是链栈

3.1.2顺序栈的数据结构描述

顺序栈结构描述时,必须的几点要素。

如何用c语言描述顺序栈

3.1.3顺序栈的算法思路、实现和效率分析

顺序栈的基本算法:

初始化、判断栈是否空、判断栈是否满、入栈、出栈、取栈顶元素。

这些算法的思路、c语言实现和效率分析(时间和空间复杂度,重点是时间复杂度)

3.1.4链栈的数据结构描述

链栈结构描述时,必须的几点要素。

如何用c语言描述链栈

3.1.5链栈的算法思路、实现和效率分析

链栈的基本算法:

初始化、判断栈是否空、判断栈是否满、入栈、出栈、取栈顶元素。

这些算法的思路、c语言实现和效率分析(时间和空间复杂度,重点是时间复杂度)

3.1.6Java中的栈

Stack

用ArrayList或LinkedList制作一个栈

Collections.asLifoQueue()

3.2队列

3.2.1什么是队列

什么是队列(我们身边的队列)、什么是顺序队列、什么是链队列

3.2.2顺序队列的数据结构描述

顺序队列结构描述时,必须的几点要素。

如何用c语言描述顺序队列

3.2.3顺序队列的算法思路、实现和效率分析

顺序队列的基本算法:

初始化、判断队列是否空、判断队列是否满、入队、出队、取队列顶元素。

这些算法的思路、c语言实现和效率分析(时间和空间复杂度,重点是时间复杂度)

3.2.4循环顺序队列的数据结构描述

循环顺序队列结构描述时,必须的几点要素。

如何用c语言描述循环顺序队列

3.2.5循环顺序队列的算法思路、实现和效率分析

循环顺序队列的基本算法:

初始化、判断队列是否空、判断队列是否满、入队、出队、取队列顶元素。

这些算法的思路、c语言实现和效率分析(时间和空间复杂度,重点是时间复杂度)

3.2.6链队列的数据结构描述

链队列结构描述时,必须的几点要素。

如何用c语言描述链队列

3.2.7链队列的算法思路、实现和效率分析

链队列的基本算法:

初始化、判断队列是否空、判断队列是否满、入队、出队、取队列顶元素。

这些算法的思路、c语言实现和效率分析(时间和空间复杂度,重点是时间复杂度)

3.2.8Java中的队列

用ArrayList或LinkedList制作一个队列

Queue和DeQue

4树与二叉树

4.1树

4.1.1什么是树

树是怎样的一种逻辑结构

4.1.2树的基本概念和术语

4.2二叉树

4.2.1什么是二叉树

二叉树是怎样的一种逻辑结构,有哪些基本概念和术语

4.2.2二叉树的性质

普通二叉树、满二叉树、完全二叉树

4.2.3二叉树的存储方法

顺序表存储和链表存储

顺序表存储的思路(怎样在顺序表中存放二叉树的结点,才能保持二叉树的逻辑结构。

书上的思路只是针对二叉树,若多叉树该如何改进,例如三叉树,方法1是在顺序表中增加一个元素,以存放是几叉树)

用c语言描述用顺序表存储的二叉树数据结构

链表存储的思路,并用c语言描述其数据结构

4.2.4二叉树的遍历

根据给出的一棵二叉树,给出其前序、中序和后序遍历法的序列。

根据给出的中序序列,和前(后)序序列),确定一棵二叉树

递归算法(理解递归算法的思路,什么时候可以用递归,递归需要注意什么)

理解用递归实现的二叉树前中后序遍历的c语言算法实现

4.2.5二叉树的其他基本操作

递归法创建二叉树

递归法计算二叉树的深度

递归法计算二叉树的双孩子结点总数

递归法计算二叉树的结点总数

递归法计算二叉树的叶子结点总数

4.3Java中的树

TreeMap和TreeSet类(TODO)

5排序

5.1排序简介

5.1.1排序的基本概念

什么是排序

排序的两个基本操作

排序的稳定性

就地排序

排序的策略

内排序和外排序

评价排序算法好坏的标准

5.1.2排序算法所用的顺序表数据结构

5.2直接插入排序

5.2.1什么是直接插入排序

5.2.2直接插入排序的算法思路

给出一个元素列表,用直接插入排序的思想给其排序,并写出排序过程。

5.2.3直接插入排序的算法实现

5.2.4直接插入排序的算法分析

时间和空间复杂度(最好情况下、最坏情况下、平均情况下)

是否属稳定排序

是否属就地排序

5.3冒泡排序

5.3.1什么是冒泡排序

5.3.2冒泡排序的算法思路

给出一个元素列表,用冒泡排序的思想给其排序,并写出排序过程。

有两种冒泡排序:

重的先沉,轻的先浮

5.3.3冒泡排序的算法实现

理解c语言实现的冒泡排序算法,思考存在什么问题,如何改进

5.3.4冒泡排序的算法分析

时间和空间复杂度(最好情况下、最坏情况下、平均情况下)

是否属稳定排序

是否属就地排序

5.4快速排序

5.4.1什么是快速排序

5.4.2快速排序的算法思路

给出一个元素列表,用快速排序的思想给其排序,并写出排序过程。

5.4.3快速排序的算法实现

理解c语言实现的快速排序算法

了解确定基准元素的几种不同方法。

在JDK1.4中,Arrays类中为基本数组排序的sort方法,就用了三者取中的方法(但与教材所描述的不同在于,没有将中值元素与首元素交换)

5.4.4快速排序的算法分析

时间和空间复杂度(最好情况下、最坏情况下、平均情况下)

是否属稳定排序

是否属就地排序

5.5选择排序

5.5.1什么是选择排序

5.5.2选择排序的算法思路

给出一个元素列表,用选择排序的思想给其排序,并写出排序过程。

5.5.3选择排序的算法实现

5.5.4选择排序的算法分析

时间和空间复杂度(最好情况下、最坏情况下、平均情况下)

是否属稳定排序

是否属就地排序

5.6归并排序

5.6.1什么是归并排序

5.6.2归并排序的算法思路

给出一个元素列表,用归并排序的思想给其排序,并写出排序过程。

有两种归并排序:

自底向上,自顶向下

5.6.3归并排序的算法实现

5.6.4归并排序的算法分析

时间和空间复杂度(最好情况下、最坏情况下、平均情况下)

是否属稳定排序

是否属就地排序

5.7各种排序算法的比较

5.8Java中的排序

 

Arrays类和Collections类的sort方法

Comparable和Comparator接口

Java的Collections.sort(List)和Arrays.sort(Object[])是改良版的归并排序。

并且当待排序的元素不多时,会用直接插入排序,例如JDK1.4中的Arrays.sort(Object[])方法,当待排序元素个数小于7时,用直接插入排序

6查找

6.1查找简介

查找的基本概念

6.2顺序查找

算法思路

6.3二分法查找

算法思路

6.4索引查找

算法思路

6.5二叉查找树

又叫二叉排序树

算法思路

6.6哈希查找

算法思路

解析Java的HashMap类,HashMap是如何解决冲突的,链表法,用头插法

6.7Java中的查找

Collections和Arrays类的binarySearch方法

HashMap和HashSet类

0补充

0.1C语言

0.1.1指针

什么是指针

各种类型的指针变量

指针数组

函数的参数和返回值用指针类型

二级指针

0.1.2typedef

0.1.3结构体

0.1.4c语言其他知识

scanf和getchar的背后机制

malloc和free函数

 

0.2eclipse集成开发环境

0.2.1下载和安装eclipse

0.2.2在eclipse中配置jdk运行环境

0.2.3在eclipse中配置代码模版

0.2.4在eclipse中创建java项目

0.2.5在eclipse中创建、编译java源文件和运行java程序

0.2.6在eclipse中用debug调试java程序

0.2.7在eclipse中以zip包格式导入导出项目

0.2.8在eclipse中生成javadoc

0.2.9eclipse常用快捷键

自动格式化ctrl+shift+f

代码助手ctrl+enter(可能快捷键有不同,可查看菜单Edit>CodeAssist)

打开某个类型(ctrl+shift+o)

打开某个资源(ctrl+shift+r)

查询某个类、变量或方法在工作区间中被引用的情况(ctrl+shift+g)

查询当前类的结构(ctrl+o)

0.3dev-c++集成开发环境

0.3.1下载和安装dev-c++

0.3.2配置dev-c++的开发和测试环境

0.3.3在dev-c++中用ArtisticStyle工具实现自动排版

0.3.4在dev-c++中调试代码(debug)

0.4代码编写规范

0.4.1c语言代码编写规范

0.4.2java语言代码编写规范

0.0其他

0.0.1UI可用性

在分析教材线性表部分例2-1时,如何提高UI可用性

0.0.2软件质量评估指标体系

在概述部分,讲算法评价时补充

0.0.3栈和堆的概念

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1