程序设计与数据结构

合集下载

数据结构和C++程序设计_题库

数据结构和C++程序设计_题库

《数据结构》Part1一.选择1. 组成数据的基本单位是()A)数据项B)数据类型C)数据元素D)数据变量2.算法分析的目的是()A)找出数据结构的合理性B)研究算法的输入/输出关系C)分析算法的效率以求改进D)分析算法的易读性3.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是()A)O(1) B)0(n) C)O(n^2) D)O(nlog2n)4.若线性表采用顺序存储结构,每个元素占用4个存储单元,第一个元素的存储地址为100,则第12个元素的存储地址是()A)112 B)144 C)148 D)4125.下面关于线性表的叙述中,错误的是()A)顺序表使用一维数组实现的线性表B)顺序表必须占用一片连续的存储单元.C)顺序表的空间利用率高于链表D)在单链表中,每个结点只有一个链域. 6.在需要经常查找结点的前驱与后继的情况下,使用()比较合适A)单链表B)双链表C)顺序表D)循环链表7.队列通常采用的两种存储结构是()A)顺序存储结构和链式存储结构B)散列方式和索引方式C)链表存储结构和线性存储结构D)线性存储结构和非线性存储结构8.在一个单链表中,若删除p所指结点的后继结点,则执行()A)p->next=p->next->next;B)p=p->next;p->nex=p->next->next;C)p->next=p->next;D)p=p->next->next;9.若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间A)单链表B)仅有头指针的单循环链表C)双链表D)仅有尾指针的单循环链表10.按二叉树的定义,具有三个结点的二元树共有()种形态。

A)3 B)4 C)5 D)611.任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序()A)发生改变B)不发生改变C)不能确定D)以上都不对12.深度为5的二叉树至多有()个结点A)16 B)32 C)31 D)1013.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,那么度为0的结点数为()个。

程序设计的基本概念PPT课件

程序设计的基本概念PPT课件
{ int a = 135, b = 246, temp; /* 用135表示音乐,246表示外语 */ temp = a; a = b; b = temp; printf(“a=%5d,b=%4d”,a,b); return (0);
}
例2:三数中取大
从键盘输入三个数,输出其中最大的一个数 问题分析:
于算术:算术方法是一个由已知推求未知的运算过 程。 ❖ 例如:菜谱是做菜肴的算法
歌谱是一首歌曲的算法 ❖ 算法的性质:(精确性) ❖ 1.解题算法是一种有穷动作 ❖ 2.此动作序列只有一个初始动作 ❖ 3.序列中每个动作仅有一个后续动作。 ❖ 4.序列终止表示问题得到解答或问题没有解答
算法的重要性
基本的三种程序结构
❖ 顺序:该结构中各个操作是按照书写的顺序 执行的。
❖ 选择:根据指定的条件进行判断,根据判断 的结果在若干分支路径中选取其中一 条来执行。
❖ 循环:根据给定条件是否满足决定是否继续 执行循环体中的操作。
三种基本算法结构
❖ 顺序结构 ❖ 选择结构(分支结构) ❖ 循环结构(重复结构)
AA执一行次也
了没一有次执行
A
p Y
N b
While型循环
A
A执行 了一次
!p N
Y b
Until型循环
三种基本算法结构的共同特点
❖ 只有一个入口 ❖ 只有一个出口
❖ 结构内每一部分都有机会 被执行到
❖ 结构内不存在“死循环”
a
a
A
B
A B
b
描述算法的两种常用方法
❖ 流程图 ❖ N/S图
一、流程图
什么是数据结构
❖ 数据结构:是一门研究非数值计算的程序设计 问题中计算机操作对象以及它们之间的关系 的操作等等的学科。

数据结构ppt课件

数据结构ppt课件

数据结构的定义数据结构是计算机中存储、组织数据的方式,它定义了数据元素之间的逻辑关系以及如何在计算机中表示这些关系。

提高算法效率合适的数据结构可以显著提高算法的执行效率,降低时间复杂度和空间复杂度。

简化程序设计数据结构为程序设计提供了统一的抽象层,使得程序员可以更加专注于问题本身,而不是底层的数据表示和访问细节。

便于数据管理和维护良好的数据结构设计可以使得数据的管理和维护变得更加方便和高效。

数据结构的定义与重要性线性数据结构中的元素之间存在一对一的关系,如数组、链表、栈和队列等。

线性数据结构非线性数据结构中的元素之间存在一对多或多对多的关系,如树、图等。

非线性数据结构静态数据结构在程序运行期间不会发生改变,如数组、静态链表等。

静态数据结构动态数据结构在程序运行期间可以动态地添加或删除元素,如链表、动态数组等。

动态数据结构数据结构的分类01020304在计算机科学中,数据结构是算法设计和分析的基础,广泛应用于操作系统、编译原理、数据库等领域。

计算机科学在软件工程中,数据结构是软件设计和开发的重要组成部分,用于实现各种软件功能和性能优化。

软件工程在人工智能中,数据结构用于表示和处理各种复杂的数据和知识,如神经网络、决策树等。

人工智能在大数据处理中,数据结构用于高效地存储、管理和分析海量数据,如分布式文件系统、NoSQL 数据库等。

大数据处理数据结构的应用领域0102线性表是具有n个数据元素的有限序列创建、销毁、清空、判空、求长度、获取元素、修改元素、插入元素、删除元素等线性表的定义线性表的基本操作线性表的定义与基本操作03用一段地址连续的存储单元依次存储线性表的数据元素顺序存储结构的定义可以随机存取,即可以直接通过下标访问任意元素;存储密度高,每个节点只存储数据元素顺序存储结构的优点插入和删除操作需要移动大量元素;空间利用率不高,需要提前分配存储空间顺序存储结构的缺点链式存储结构的定义01用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的链式存储结构的优点02插入和删除操作不需要移动大量元素,只需要修改指针;空间利用率高,不需要提前分配存储空间链式存储结构的缺点03不能随机存取,只能通过从头节点开始遍历的方式访问元素;存储密度低,每个节点除了存储数据元素外,还需要存储指向下一个节点的指针0102定义栈(Stack)是一种特殊的线性数据结构,其操作只能在一端(称为栈顶)进行,遵循后进先出(LIFO)的原则。

程序设计基础(知识点)

程序设计基础(知识点)

程序设计基础(知识点)程序设计是计算机科学的核心技术之一,它主要涉及算法、数据结构和编程语言等方面的基础知识。

掌握程序设计基础知识对于想要成为一名优秀的程序员来说是至关重要的。

本文将介绍程序设计的基础知识点,包括算法与数据结构、编程语言和开发环境等内容。

一、算法与数据结构算法是程序设计的核心,它是解决问题的一系列步骤或指令。

在程序设计中,我们需要选择合适的算法来解决不同的问题。

常见的算法包括排序算法、查找算法、图算法等。

同时,数据结构也是算法的基础,它是一种组织和管理数据的方式。

常见的数据结构包括数组、链表、栈、队列、树和图等。

掌握不同的算法和数据结构,可以提升程序的效率和性能。

二、编程语言编程语言是实现程序设计的工具,常见的编程语言有C、C++、Java、Python等。

每种编程语言都有自己的语法和特点,选择合适的编程语言可以提高程序开发的效率和可读性。

此外,熟练掌握一种编程语言后,可以更好地理解和学习其他编程语言。

三、开发环境开发环境是进行程序开发的工具和系统环境。

常见的开发环境包括集成开发环境(IDE)和命令行界面。

IDE提供了编译、调试和代码编辑等功能,能够方便地进行程序开发。

例如,Eclipse、Visual Studio和PyCharm等是常用的IDE。

命令行界面则更加灵活,可以通过命令行输入指令来编译和执行程序。

四、程序设计实践除了理论知识,实践也是掌握程序设计基础的关键。

通过编写实际的程序,我们可以将理论知识应用到实际问题中。

在实践中,我们可以学习到如何分析和解决问题、如何优化程序等技巧。

同时,我们还可以参与开源项目和程序设计竞赛等活动,与其他程序员共同学习和进步。

五、学习资源1. 书籍:《算法导论》、《数据结构与算法分析》、《C程序设计语言》等是经典的程序设计教材,可以帮助我们深入理解程序设计的基础知识。

2. 在线教育平台:Coursera、edX、慕课网等提供了丰富的程序设计课程,包括算法与数据结构、编程语言和程序设计实践等方面的内容。

902数据结构与C语言程序设计考研大纲

902数据结构与C语言程序设计考研大纲

902数据结构与C语言程序设计考研大纲902 数据结构与C语言程序设计考研大纲一、考试内容(一)数据结构1.线性表1)线性表的定义2)线性表的顺序存储和基本运算(查找、插入和删除)的实现3)线性表的链式存储和基本运算(查找、插入和删除)的实现4)线性表的应用2.栈、队列和矩阵1)栈和队列的定义2)栈和队列的实现(1)栈的顺序存储和基本操作(入栈、出栈和判栈空、栈满)的实现(2)栈的链式存储和基本操作(入栈、出栈和判栈空)的实现(3)队列的链式存储和基本操作(入队、出队和判队空)的实现(4)循环队列的定义和基本操作(入队、出队和判队空、队满)的实现3)栈和队列的应用4)矩阵的压缩存储(1)特殊矩阵(对称矩阵、三角矩阵、对角矩阵)的压缩存储(2)稀疏矩阵的压缩存储3.树与二叉树1)树的基本概念2)二叉树(1)二叉树的定义及性质(2)二叉树的顺序存储和链式存储(3)二叉树的先序、中序、后序遍历和层序遍历运算(4)线索二叉树的定义3)树和森林(1)树的存储结构(2)树(森林)与二叉树的相互转换(3)树和森林的遍历4)树与二叉树的应用(1)二叉查找树(Binary Search Tree)(2)平衡二叉树(Balanced Binary Tree 或Height-Balanced Tree或A VL Tree)(3)哈夫曼(Huffman)树和哈夫曼编码4.图1)图的基本概念2)图的存储(1)数组表示法(邻接矩阵表示法)(2)邻接表表示法3)图的遍历(1)深度优先搜索(DFS)算法(2)广度优先搜索(BFS)算法4)图的应用(1)最小(代价)生成树求解方法(Prim算法和Kruskal算法)(2)最短路径求解方法(Dijkstra算法和Floyd算法)(3)AOV-网和拓扑排序方法(4)AOE-网和关键路径求解方法5.查找1)查找的基本概念2)顺序查找法(1)顺序查找算法(2)平均查找长度计算3)折半查找法(1)折半查找算法(2)折半查找判定树的构造(3)平均查找长度计算4)动态查找表(1)二叉查找树(也称为二叉排序树)的构造及查找、插入和删除运算(2)平衡二叉树的构造及查找运算(3)B-树的特点及查找运算(4)平均查找长度计算5)哈希表(1)哈希表的构造及查找运算(2)平均查找长度计算6)字符串的模式匹配(1)基本的模式匹配算法(2)KMP模式匹配算法(模式串的next函数计算)6.内部排序1)简单排序方法(1)直接插入排序算法(2)冒泡排序算法(3)简单选择排序算法(4)简单排序算法的时间复杂度、空间复杂度及稳定性分析2)快速排序(1)划分过程及分析(2)快速排序算法及其时间复杂度、空间复杂度及稳定性分析3)堆排序(1)堆的定义及初始堆的建立(2)堆排序算法及其时间复杂度、空间复杂度及稳定性分析4)归并排序(1)归并过程及分析(2)二路归并排序算法的时间复杂度、空间复杂度及稳定性分析5)基数排序(1)多关键排序方法(2)链式基数排序方法及特点6)内部排序方法的比较和应用(二)C语言程序设计1. C语言基础(1)数据类型(基本类型和复合类型),常量与变量,运算符与表达式,类型转换;(2)关键字(保留字),用户定义标识符;(3)typedef,sizeof,static,extern,const。

简述结构化程序设计方法的基本要点

简述结构化程序设计方法的基本要点

结构化程序设计方法的基本要点简介结构化程序设计方法是一种用于构建大型程序的系统性方法。

它通过将程序分解为一系列小的、可管理的模块,以及规定了模块之间的交互方式,从而降低程序的复杂性,提高程序的可维护性和可读性。

本文将从以下几个方面详细介绍结构化程序设计方法的基本要点。

1. 模块化模块化是结构化程序设计方法的核心思想之一。

模块化将程序分解为多个功能相对独立的模块,每个模块负责完成一个特定的任务。

模块化有助于提高程序的可读性,可维护性和可重用性。

1.1 模块划分在进行模块划分时,可以按照功能划分原则,将程序划分为几个不同的功能模块,每个模块负责完成一个特定的功能。

也可以按照数据划分原则,将程序划分为几个处理不同数据的模块。

模块应该具有清晰的职责和界限,不同模块之间的功能和数据交互应该通过接口进行。

1.2 接口设计模块之间的接口设计是模块化的关键。

接口应该明确定义模块之间的输入和输出,以及数据的传递方式。

良好的接口设计可以降低模块之间的耦合度,提高代码的可复用性,使得模块可以独立开发和测试。

1.3 函数与过程模块可以通过函数或过程来实现。

函数是一段可重用的代码,用于执行特定的计算或操作,并返回一个结果。

过程是一段可重用的代码,用于执行一系列操作,不返回结果。

函数和过程有助于将程序划分为更小的单元,提高程序的可读性和可维护性。

2. 控制结构控制结构是结构化程序设计方法的另一个重要要点。

控制结构用于控制程序的执行流程,改变程序的执行顺序或执行条件。

2.1 顺序结构顺序结构是程序从上到下按照顺序执行的控制结构。

顺序结构是程序的基础,所有的程序都是从顺序结构开始进行。

2.2 选择结构选择结构用于根据条件选择执行不同的代码块。

常见的选择结构包括if语句和switch语句。

if语句用于判断一个条件是否成立,如果条件成立,则执行其中的代码块;否则执行其他代码块。

switch语句可以根据一个表达式的值选择执行不同的代码块。

什么是程序设计意思与概念

什么是程序设计意思与概念

什么是程序设计意思与概念程序设计是一门关于编写计算机程序的学科,它涉及到定义、设计和实现算法和数据结构,以及编写、测试和维护这些计算机程序的过程。

程序设计是计算机科学的重要组成部分,也是计算机软件开发中的核心环节。

本文将介绍程序设计的意义和基本概念。

一、程序设计的意义程序设计在日常生活和工作中扮演着重要的角色,它的意义主要体现在以下几个方面。

1. 自动化处理:程序设计可以让计算机完成各种复杂的任务和处理过程,实现自动化处理。

例如,我们可以设计一个程序来自动化处理大量的数据,提高工作效率。

2. 解决实际问题:通过程序设计,我们可以解决和改进许多实际问题。

例如,我们可以利用程序设计实现在线购物、在线支付等功能,方便人们日常生活。

3. 提高效率和精确度:通过程序设计,可以使计算机以更高的速度和更高的准确性处理数据和任务,从而提高工作效率和精确度。

二、程序设计的基本概念1. 算法:算法是程序设计的基础,它是由一系列明确指令组成的计算步骤序列,用于解决特定问题或完成特定任务。

一个好的算法应该具有清晰、可执行和高效的特点。

2. 数据结构:数据结构是程序设计中用于组织和存储数据的方式。

常见的数据结构包括数组、链表、栈、队列、树和图等。

不同的数据结构适用于不同的应用场景,选择合适的数据结构可以提高程序的运行效率和可扩展性。

3. 编程语言:编程语言是进行程序设计的工具,它是一种用于定义和组织计算机程序的规范或语法。

常见的编程语言包括C、C++、Java、Python等。

不同的编程语言适用于不同的应用领域,选择合适的编程语言可以提高编程效率和程序性能。

4. 软件开发过程:软件开发过程是指从需求分析到软件发布的整个过程。

它包括需求分析、系统设计、编码实现、测试和维护等阶段。

良好的软件开发过程可以提高软件质量和开发效率。

5. 调试和错误处理:在程序设计过程中,出现错误是常见的。

调试和错误处理是程序设计中重要的环节,它们用于找出程序中的错误并对其进行修复。

中国科学院数据结构与程序设计1999真题

中国科学院数据结构与程序设计1999真题
中科院 1992 分) 1.___ 的遍历仍需要栈的支持。 1.前序线索树 2.中序线索树 3.后序线索树
2.若度为 m 的哈夫曼树中,其叶结点个数为 n,则非叶结点的个数为___。 1.n-1 2.[n/m]-1 3.[(n-1)/(m-1)] 4.[n/(m-1)]-1 5.[(n+1)/(m+1)]-1 3.最优二叉树(哈夫曼树)、最优查找树均为平均查找路径长度∑wh 最小的树,其中对 最优二叉树,n 表示___,对最优查找树,n 表示___; 构造这两种树均___。 1.结点数 2.叶结点数 3.非叶结点数 4.度为二的结点数 5.需要一张 n 各关键字的有序 表 6.需要对 n 个关键字进行动态插入 7.需要 n 个关键字的查找概率表 8.不许要任何前 提 4.对于前序遍历与中序遍历结果相同的二叉树为___; 对于前序遍历与后序遍历结果相 同的二叉树为___。 1.一般二叉树 2.只有根结点的二叉树 3.根结点无左孩子的二叉树 4.根接点无右孩子的 二叉树 5.所有结点只有左子树的二叉树 6 所有结点只有右子树的二叉树 5.m 路 B+树是一棵___, 其结点中关键字最多为___个, 最少为___个。 1.m 路平衡查找树 2.m 路平衡索引树 3.m 路 trie 树 4.m 路键树 5.m-1 6.m 7 m+1 8.[m/2]-1 9.[m/2] 10.[m/2]+1 二、填空题(10 分,每空一分) 1.对于给定的 n 个元素,可以构造出的逻辑结构有___,___,___,___四种。 2.具有 n 个关键字的 B-树的查找路径长度不会大于___。 3.克鲁斯卡尔算法的时间复杂度为___, 他对___图较为适合。 4.深度为 k(设根的层数为 1)的完全二叉树至少有___个结点, 至多有___个结点, k 和结点 数 n 之间的关系是___。 三、问答题(10 分,每题 5 分) 1.一棵非空的有向树中恰有一个顶点入度为 0,其他顶点入度为 1.但一个恰有一个顶点 的入度为 0, 其他顶点入度为一的有向图却不一定是一棵有向树。请举例说明之。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“程序设计与数据结构”教学大纲课程名称:程序设计与数据结构英文名称:Program Design and Data Structure学时:96学分:6课程类型:必修课程性质:专业基础课适用专业:自动化(交通信息工程及控制)先修课程:计算机科学与编程导论开课学期:第1、2学期开课院系:信息科学与技术学院一、课程的教学目标与任务本课程培养学生较熟练地掌握C语言程序设计的基本技能,掌握各种基本数据结构和算法。

通过本课程的学习,掌握C语言基础知识;掌握简单算法和数据结构的基本设计方法;掌握复杂数据结构(例如栈和队列以及链表)的含义并能简单应用,建立程序设计的思想,培养学生的问题解决能力和实际编程能力;了解并初步掌握当前软件行业公认的程序设计风格和编程实践。

学生应掌握各种基本数据结构的概念、实现方法及涉及的基本算法,并能用这些数据结构和算法解决相关的应用问题,为进一步学习相关学科打下坚实的基础。

通过本课程的学习。

重点是阐述程序设计思想和各种数据结构及其相关算法,培养学生分析问题和使用程序和数据结构解决问题的能力。

二、本课程与其它课程的联系和分工“计算机科学与编程导论”是本课程的先修课程。

具体分工是:由计算机科学与编程导论课程建立对计算机的基本认识,了解软件的构成及分类,了解程序的运行原理和过程;由本课程介绍程序设计基础和软件开发方法,C语言的基本语法和语义(包括变量、简单数据类型、表达式和语句、输入和输出基础、顺序、条件和循环控制结构、函数定义、函数调用和参数传递等关于程序设计的基本要素),基本数据结构和算法,使用C语言进行程序设计的方法以及使用程序解决问题的方法。

与本课程关联的有相同学期开设的“程序语言设计实验”独立实验课,此外,为增强软件开发能力,在短二期设置相应的能力训练实践课程“软件基础训练”。

本课程为计算机学科的多个后续课程打下基础,如计算机网络、课外创新实践等。

三、课程内容及基本要求第一部分:C语言程序设计(一)计算机与程序设计概述(2学时)主要内容:(1)计算机软件分类(2)计算机语言(3)程序执行的原理和过程(4)软件开发方法1.基本要求了解计算机软件的分类以及计算机语言的分类;理解程序执行的原理和过程;了解基本的软件开发方法和应用软件的开发方法。

2.重点、难点重点:程序执行的原理和过程由于在《计算机科学与编程导论》课程中已经讲授了基本的计算机概念和软件的基础知识,因此这里仅需进行内容回顾,并重点讨论程序执行原理和过程,介绍软件开发方法。

(二) C程序基础(2学时)主要内容:(1)字符集、保留字集、标识符、算符等基本词法元素(2)变量声明和数据类型(3)可执行语句(4)键盘输入和屏幕输出等输入/输出基础(5)运算符与表达式(6)C预处理:include、define(7)C程序的一般形式1.基本要求记住C所用的字符集和保留字,了解C的基本数据类型;明确常量、变量与字面量的含义;掌握运算符的使用、表达式的含义和计算过程;掌握用标准函数实现输入和输出的基本方法;掌握各类可执行语句的使用;了解C编译器的基本工作过程和各类预编译语句的使用;能熟练运用上述基本元素进行简单的C程序设计。

2.重点、难点重点:基本数据类型、运算符与表达式、基本的输入和输出处理、语句由于这是第一门程序设计课程,因此需要让学生深入理解变量、表达式的内涵,掌握C 程序的一般形式,并建立良好的编程风格。

(三) 基本程序控制结构(8学时)主要内容:(1)控制结构(2)条件语句:if语句和switch语句;嵌套if语句和多选项决策(3)循环语句:for语句;do-while语句;嵌套循环1.基本要求了解什么是控制结构;掌握基本的程序控制结构(包括顺序结构、条件选择和循环结构)及其执行流程;掌握不同程序控制结构的C语言实现;掌握嵌套的程序控制结构及其执行流程;熟练使用C语言控制结构设计程序。

2. 重点、难点重点:条件结构和循环结构的基本形式及执行流程难点:if语句的匹配原则;循环语句的结束条件和执行次数;复合控制结构的流程。

可以采用流程图来阐述不同控制结构的执行流程,便于学生理解。

这部分内容需特别加强应用举例。

(四) 数组与字符串(6学时)主要内容:(1)声明和引用数组及数组下标(2)多维数组(3)字符数组与字符串(4)字符串库函数的使用1.基本要求掌握声明数组和引用数组的语法;掌握数组初始化的方法;掌握C语言数组下标的特殊性;了解多维数组的声明及引用语法;掌握字符数组与字符串的区别;掌握初始化字符串变量的方法;掌握常用的字符串操作库函数。

2. 重点、难点重点:声明数组和引用数组的语法;字符串的特殊性;字符串操作库函数的使用。

难点:数组的存储和访问方法;C语言数组下标的特殊性;字符串与字符数组的区别。

(五) 函数与模块化编程(10学时)主要内容:(1)函数的基本概念(2)函数的定义、声明和调用(3)参数传递和变量的作用域(4)递归(5)标准函数或预定义函数(6)模块化编程1.基本要求了解函数是过程抽象的基本形式,掌握函数的定义、声明和调用方法;了解函数、变量等先声明后引用的一般原则;理解参数传递的内涵,了解函数操作的对象的不同形式、作用域和使用方法;了解递归函数的运行过程,掌握递归函数的编写方法;掌握标准函数或预定义函数的使用方法;理解模块化编程的内涵并掌握自顶向下设计的方法。

2.重点、难点重点:函数的定义、声明和调用,参数传递,变量(数据)的作用域,递归函数的运行过程和递归函数的编写,标准函数的使用;模块化编程的意义难点:参数传递,尤其是数组作为函数参数;变量的作用域;递归函数的运行过程和递归函数的编写。

这部分内容需特别加强应用举例。

(六) 结构体与共用体(联合)(6学时)主要内容:(1)结构体的声明及数据程远引用(2)共用体的声明与使用(3)共用体与结构体的区别1.基本要求掌握结构类型的定义和使用,了解联合数据类型的定义和使用;理解共用体与结构体的区别。

2.重点、难点重点:结构类型的定义和应用。

这部分内容需特别加强应用举例。

(七) 动态数据结构(指针)(8学时)主要内容:(1)指针的概念及其含义以及如何使用指针引用变量(2)指针运算的意义及其使用(3)动态内存分配(4)使用指针实现链表、二叉树等动态数据结构1.基本要求理解指针其实是一个内存地址;掌握如何通过指针引用变量;理解只恨运算的意义及合法性;掌握分配内存和回收内存的方法;了解如何使用指针实现链表等动态数据结构。

2.重点、难点重点:指针的概念及其含义了;使用指针变量的方法;指针运算的含义。

难点:指针是C语言中初学者比较难以理解和掌握的一个问题,需要从指针的本质来阐明它的实际意义及使用方法;使用指针实现动态数据结构是一种高效的方法,但也是初学者容易犯错误的地方,需要特别加强引用举例。

(八)文件处理(6学时)主要内容:(1)文件指针变量(2)文件的打开与关闭、打开文件的不同方式(3)文件读写和定位1.基本要求了解磁盘文件的不同组织形式;掌握打开文件的不同方式和关闭文件的方法;掌握读写文件和在文件中定位的方法。

2.重点、难点重点:文件的打开方式;文件读写和定位。

第二部分:数据结构(一) 数据结构的基本概念(2学时)主要内容:(1)数据结构的概念,包括数据、数据元素、结构;(2)逻辑结构和物理结构的概念和区别;(3)抽象数据类型的概念、表示和实现;(4)算法的概念、特性、设计要求;(5)算法性能评价方法,大O记法。

1.基本要求应了解数据结构的基本含义、课程所研究的主要内容,了解四类基本结构:集合、线性结构、树形结构、图状结构。

掌握逻辑结构和物理结构的定义与区别,了解两类存储结构:顺序存储结构和链式存储结构。

掌握抽象数据类型ADT的定义、表示和实现。

掌握算法的定义、特性、设计要求和性能度量方法,包括时间复杂度和空间复杂度,能用大O记法表示时间、空间复杂度。

2.重点与难点重点:数据结构的定义,四类基本结构;逻辑结构和物理结构的区别,两类存储结构;ADT的定义;算法的性能度量方法。

难点:逻辑结构、物理结构的区别;时间复杂度的定义与大O表示法。

(二)线性表(6学时)主要内容:(1)线性表的概念与基本运算;(2)线性表的顺序表示和实现;(3)线性表的链式表示和实现,包括单链表、静态链表、循环链表、双向链表;(4)线性表的应用:一元多项式的表示与相加。

1.基本要求掌握线性表的概念和基本运算,能用基本运算实现一些应用。

熟练掌握顺序表的表示,理解随机存取的含义,掌握顺序表的基本算法,包括插入、删除、查找。

熟练掌握链式存储的表示和实现,理解头指针、头结点的含义,掌握单链表、静态链表、循环链表、双向链表的概念和基本运算实现,包括插入和删除。

2.重点与难点重点:线性表的概念;顺序表的表示、特点,插入、删除操作的实现与复杂度分析;链式表示的特点,各种链表的概念,插入、删除操作的实现。

难点:顺序表与链表的特性对比与选取,插入、删除操作的实现。

(三)栈和队列(4学时)主要内容:(1)栈的概念、基本运算;(2)栈的两种实现:顺序栈和链栈,入栈与出栈操作的实现;(3)栈的应用,特别是栈与函数调用、递归的关系;(4)队列的概念、基本运算;(5)队列的两种实现:链队列和循环队列,入队列和出队列操作的实现。

1.基本要求掌握栈的基本概念:后进先出的特点、栈底、栈顶。

熟练掌握顺序栈和链栈的表示方法,入栈、出栈操作的实现。

了解栈的几种应用,如数制转换、括号匹配的检验、行编辑程序、迷宫求解、表达式求值。

理解栈在函数调用与递归实现中的重要作用,会写递归程序。

掌握队列的概念:先进先出的特点、队头、队尾。

熟练掌握链队列、循环队列的表示方法,入队列、出队列操作的实现,理解循环队列设计的初衷。

2.重点与难点重点:栈的概念与特点;顺序栈和链栈的表示,入栈和出栈的实现;栈与函数调用和递归实现的关系;队列的概念与特点;链队列与循环队列的表示,入队列、出队列的实现。

难点:栈与函数调用、递归的关系;循环队列的设计初衷与基本运算实现。

(四)串(2学时)主要内容:(1)串的概念与基本运算;(2)串的三种表示与实现:定长顺序串、堆分配顺序串、块链串;(3)串的模式匹配算法:BF算法与KMP算法。

1.基本要求掌握串的基本概念:子串、主串、位置;掌握串的基本运算。

掌握三种表示方法:定长顺序存储、堆分配顺序存储、块链存储。

掌握朴素的模式匹配算法BF算法和改进的模式匹配算法KMP算法,理解改进的思路。

2.重点与难点重点:串的概念,与线性表的区别;基本运算;三种表示方法;BF算法;KMP算法。

难点:KMP算法。

(五)数组和广义表(4学时)主要内容:(1)数组的定义;(2)数组的顺序表示和实现;(3)矩阵的压缩存储;(4)广义表1.基本要求掌握数组的定义,理解数组与线性表的区别。

相关文档
最新文档