C语言程序设计和数据结构
- 格式:doc
- 大小:30.50 KB
- 文档页数:6
二、C语言程序设计(60分)基本要求(1)能运用结构化程序设计方法编写程序。
(2)掌握基本数据结构和常用算法。
(3)能熟练使用C 语言。
1. C语言的结构(1)程序的构成,main函数和其他函数。
(2)头文件,数据说明,函数的开始和结束标志。
(3)源程序的书写格式。
(4)C语言的风格。
2.数据类型及其运算(1)数据类型(基本类型,构造类型,指针类型,空类型)及其使用方法。
(2)运算符的种类,运算优先级,结合性。
(3)不同类型数据间的转换与运算。
(4)表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。
3.基本语句(1)表达式语句,空语句,复合语句。
(2)数据的输入与输出,输入输出函数的调用。
(3)复合语句。
(4)go to 语句和语句标号的使用。
4.选择结构程序设计(1)用if 语句实现选择结构。
(2)用switch语句实现多分支选择结构。
(3)选择结构的嵌套。
5.循环结构程序设计(1)for循环结构。
(2)while和do while循环结构。
(3)continue语句,break语句。
(4)循环的嵌套。
6.数组的定义和引用(1)一维数组和多维数组的定义,初始化和引用。
(2)字符串与字符数组。
7.函数(1)库函数的正确调用。
(2)函数的定义方法。
(3)函数的类型和返回值。
(4)形式参数与实在参数,参数值的传递。
(5)函数的正确调用,不含嵌套调用和递归调用。
(6)局部变量和全局变量。
(7)变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。
8.指针(1)指针与指针变量的概念,指针与地址运算符。
(2)变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。
通过指针引用以上各类形数据。
(3)用指针作函数参数。
9.结构体与共用体(1)结构体与共用体类型数据的定义方法和引用方法。
(2)用指针和结构体构成链表,链表的建立、输出。
c语言程序设计大纲
【最新版】
目录
1.C 语言概述
2.C 语言编程基础
3.运算符与表达式
4.控制结构
5.函数
6.指针与内存管理
7.数据结构
8.文件操作
9.实战案例与编程实践
正文
C 语言是一种广泛应用于计算机领域的编程语言。
它具有语法简洁、执行效率高、跨平台等特点,适合初学者学习。
本课程将为您介绍 C 语言的基本概念和编程技巧,帮助您掌握 C 语言编程的基本方法。
首先,我们将对 C 语言进行概述,了解其发展历程、特点和适用场景。
接下来,我们将学习 C 语言编程的基础知识,包括编程环境搭建、基本数据类型、输入输出语句等。
在掌握基础知识后,我们将深入学习 C 语言的运算符与表达式,了解各种运算符的优先级和结合性,熟练运用各种表达式进行程序设计。
此外,还将学习控制结构,如条件语句、循环语句等,以便能够编写出复杂的逻辑结构。
函数是 C 语言中重要的编程概念之一。
我们将学习如何定义和调用
函数,理解函数传参的方式,学会使用递归函数等。
此外,还将介绍指针与内存管理,使您能够更好地掌握 C 语言的精髓。
数据结构是计算机科学的核心概念。
在本课程中,我们将学习 C 语言中的数据结构,如数组、链表、栈、队列等,并学会使用结构体和联合体等复合数据类型。
文件操作是 C 语言编程中不可或缺的一部分。
我们将学习如何进行文件的打开、关闭、读写等操作,了解文件指针的使用方法。
最后,我们将通过实战案例和编程实践,巩固所学知识,提高编程能力。
831c语言程序设计与数据结构考试大纲C语言程序设计与数据结构考试大纲在计算机科学和软件工程领域中,C语言是一种被广泛应用的编程语言。
掌握C语言的程序设计和数据结构是每个计算机科学学生和软件工程师的基本要求。
因此,本文将根据831C语言程序设计与数据结构考试大纲,对考试内容进行详细描述和解析。
一、C语言基础知识1. C语言概述和发展历史本部分要求学生了解C语言的背景和历史发展,包括C语言的特点、优势、发展版本等。
2. C语言的基本语法和数据类型学生需要掌握C语言的基本语法和数据类型,包括变量的声明和定义、基本数据类型(整型、浮点型、字符型等)、运算符和表达式等。
3. C语言的控制结构学生需要熟悉C语言的控制结构,包括顺序结构、选择结构(if语句、switch 语句)和循环结构(for循环、while循环、do-while循环)等。
4. C语言的函数和递归学生需要了解C语言的函数定义、函数调用、函数参数传递和返回值,以及递归函数的概念和应用。
二、C语言高级特性1. 数组和字符串学生需要理解C语言中数组和字符串的概念和用法,包括数组的声明和初始化、多维数组、字符串的处理和常用函数等。
2. 指针和内存管理学生需要掌握C语言中指针的概念和使用方法,包括指针的声明和初始化、指针运算、指针与数组的关系、动态内存分配和释放等。
3. 结构体和联合体学生需要了解C语言中结构体和联合体的概念和应用,包括结构体的定义和初始化、结构体与指针的关系、结构体的嵌套和联合体的特点等。
4. 文件操作学生需要掌握C语言中文件的打开、关闭、读写和定位操作,以及文件的错误处理和异常处理机制。
三、数据结构1. 线性表学生需要了解线性表的概念和特点,包括顺序表和链表的定义、插入和删除操作、线性表的应用等。
2. 栈和队列学生需要了解栈和队列的概念和实现方法,包括栈和队列的定义、基本操作、应用和相关算法等。
3. 树和二叉树学生需要了解树和二叉树的概念和遍历方法,包括树和二叉树的定义、遍历(前序、中序、后序)和应用等。
C语言程序设计实训教程C语言程序设计是计算机科学中非常重要的一门课程,也是许多计算机专业学生的必修课。
通过实训教程的方式学习C语言程序设计,可以帮助学生更好地理解和掌握该编程语言的基本概念、语法、及其在实际应用中的技巧和方法。
本文将介绍一份C语言程序设计实训教程,供初学者参考。
第一部分:C语言基础知识1.程序结构:C语言程序的基本结构,包括头文件引用、全局变量声明、函数定义等等。
2.变量和数据类型:C语言的基本数据类型,包括整型、浮点型、字符型以及数组等,以及变量的命名规则和参数传递方式。
3.运算符和表达式:C语言中的运算符种类及其优先级,包括算术运算符、关系运算符、逻辑运算符等等。
4. 控制语句:C语言中的if语句、switch语句、for循环、while 循环等等,用于控制程序的流程和执行条件。
第二部分:C语言实用技巧1.函数的定义与调用:学习如何定义函数、传递参数和返回值,并在主函数中调用函数实现特定功能。
2.数组和指针:了解C语言中数组的定义和使用,以及指针的概念和操作,包括指针的声明、初始化、指针运算等。
3.字符串处理:学习如何使用C语言中的字符串处理函数,如字符串复制、字符串连接、字符串比较等。
4.文件操作:学习如何使用C语言中的文件操作函数,对文件进行读写和管理,如打开文件、读取文件内容、写入文件等等。
第三部分:C语言实战练习为了检验学生对C语言程序设计的掌握程度,实训教程应该包含一些实战练习,并提供详细的题目和解答思路。
这些练习可以涵盖以下方面:1.基本算法:编写求解斐波那契数列、阶乘、素数判断等算法的程序。
2.数据结构:实现链表、栈、队列等数据结构,并实现相应的操作函数。
3.排序和查找:使用不同的排序算法(如冒泡排序、快速排序)对数组进行排序,实现线性和二分查找。
4.综合应用:编写一个简单的学生成绩管理系统、图书馆管理系统等。
第四部分:调试与优化技巧1.使用调试器:介绍如何使用常见的C语言调试器(如GDB)进行断点调试、变量监测等操作。
c与数据结构课程设计一、教学目标本课程的教学目标是使学生掌握C语言编程基础及其在数据结构中的应用。
具体目标如下:1.知识目标:–理解C语言的基本语法、数据类型、运算符、控制结构。
–掌握函数的定义、调用和参数传递。
–了解数据结构的基本概念,包括线性表、栈、队列、树、图等。
–理解算法的基本概念,能够分析算法的时间和空间复杂度。
2.技能目标:–能够使用C语言编写简单的程序,对数据进行处理和分析。
–能够运用数据结构解决实际问题,提高程序的效率和可维护性。
–掌握算法的设计和分析方法,能够编写高效的程序。
3.情感态度价值观目标:–培养学生的编程兴趣,提高学生解决实际问题的能力。
–培养学生团队合作的精神,提高学生的沟通和协作能力。
–培养学生勇于探索、不断创新的精神,提高学生的自主学习能力。
二、教学内容本课程的教学内容主要包括C语言基础、数据结构及其在C语言中的应用。
具体安排如下:1.C语言基础:–基本语法、数据类型、运算符、控制结构。
–函数的定义、调用和参数传递。
–指针的概念和应用。
2.数据结构:–线性表的顺序存储和链式存储。
–栈和队列的定义、实现及其应用。
–树的基本概念、二叉树的遍历和应用。
–图的定义、遍历算法和应用。
3.数据结构在C语言中的应用:–排序算法及其实现。
–查找算法及其实现。
–动态规划算法及其应用。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
具体安排如下:1.讲授法:用于讲解C语言基础知识和数据结构的基本概念。
2.案例分析法:通过分析实际案例,使学生掌握数据结构在C语言中的应用。
3.实验法:让学生动手编写程序,巩固所学知识,提高实际编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
具体安排如下:1.教材:选用《C程序设计语言》作为主教材,辅助以《数据结构与算法分析》等参考书。
2.多媒体资料:提供PPT、视频教程等资料,帮助学生更好地理解课程内容。
C语言程序设计课程是一门计算机科学和工程学科的基础课程,旨在帮助学生掌握C语言的基本语法、数据类型、控制结构、函数、指针等概念,以及学会如何使用C语言进行程序设计、数据结构和算法等。
该课程通常包括以下内容:
C语言概述:介绍C语言的起源、特点和用途,以及C语言的编译和运行过程。
基本语法:介绍C语言的基本语法,包括变量、数据类型、运算符、控制结构等。
函数:介绍函数的定义、声明和调用,以及函数的参数传递、返回值等。
数组和指针:介绍数组和指针的概念,以及如何使用指针进行数组操作、动态内存分配等。
字符串处理:介绍字符串的基本操作,包括字符串的输入输出、长度计算、字符串操作等。
数据结构和算法:介绍常见的数据结构,如数组、链表、树等,以及常见的算法,如排序、查找等。
文件操作:介绍文件的打开、读写和关闭等操作。
程序调试和测试:介绍程序调试和测试的方法和技术,以及如何编写测试用例进行测试。
通过学习C语言程序设计课程,学生可以掌握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。
如你想要拥有完美无暇的友谊,可能一辈子找不到朋友。
二级C语言公共基础知识之数据结构考点1 算法的复杂度1.算法的基本概念算法的基本特征:可行性、确定性、有穷性、输入(可为0)、输出(不能为0) 2.算法复杂度包括时间复杂度和空间复杂度名称描述时间复杂度是指执行算法所需要的计算工作量空间复杂度是指执行这个算法所需要的内存空间考点2 逻辑结构和存储结构1.逻辑结构2.存储结构考点3 线性结构和非线性结构根据数据结构中各数据元素之间前后件关系的复杂程度一般将数据结构分为两大类型:线性结构与非线性结构如果一个非空的数据结构满足下列两个条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件也最多有一个后件则称该数据结构为线性结构线性结构又称线性表在一个线性结构中插入或删除任何一个结点后还应是线性结构栈、队列、串等都线性结构如果一个数据结构不是线性结构则称之为非线性结构数组、广义表、树和图等数据结构都是非线性结构考点4 栈1.栈的基本概念栈(stack)是一种特殊的线性表是限定只在一端进行插入与删除的线性表在栈中一端是封闭的既不允许进行插入元素也不允许删除元素;另一端是开口的允许插入和删除元素通常称插入、删除的这一端为栈顶另一端为栈底当表中没有元素时称为空栈栈顶元素总是后被插入的元素从而也是最先被删除的元素;栈底元素总是最先被插入的元素从而也是最后才能被删除的元素"先进后出"或"后进先出"2.栈的顺序存储及其运算栈的基本运算有三种:入栈、退栈与读栈顶元素(1)入栈运算:入栈运算是指在栈顶位置插入一个新元素(2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量(3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量考点5 队列1.队列的基本概念队列是只允许在一端进行删除在另一端进行插入的顺序表通常将允许删除的这一端称为队头允许插入的这一端称为队尾当表中没有元素时称为空队列队列的修改是依照先进先出的原则进行的因此队列也称为先进先出的线性表或者后进后出的线性表例如:火车进遂道最先进遂道的是火车头最后是火车尾而火车出遂道的时候也是火车头先出最后出的是火车尾若有队列:Q =(q1q2...qn)那么q1为队头元素(排头元素)qn为队尾元素队列中的元素是按照q1q2...qn的顺序进入的退出队列也只能按照这个次序依次退出即只有在q1q2...qn-1 都退队之后qn才能退出队列因最先进入队列的元素将最先出队所以队列具有先进先出的特性体现"先来先服务"的原则队头元素q1是最先被插入的元素也是最先被删除的元素队尾元素qn是最后被插入的元素也是最后被删除的元素"先进先出"入队运算为往队列队尾插入一个数据元素退队运算为从队列的队头删除一个数据元素考点6 链表在链式存储方式中要求每个结点由两部分组成:一部分用于存放数据元素值称为数据域另一部分用于存放指针称为指针域其中指针用于指向该结点的前一个或后一个结点(即前件或后件)链式存储方式既可用于表示线性结构也可用于表示非线性结构(1)线性链表线性表的链式存储结构称为线性链表在某些应用中对线性链表中的每个结点设置两个指针一个称为左指针用以指向其前件结点;另一个称为右指针用以指向其后件结点这样的表称为双向链表在线性链表中各数据元素结点的存储空间可以是不连续的且各数据元素的存储顺序与逻辑顺序可以不一致在线性链表中进行插入与删除不需要移动链表中的元素(2)带链的栈栈也是线性表也可以采用链式存储结构带链的栈可以用来收集计算机存储空间中所有空闲的存储结点这种带链的栈称为可利用栈考点7 二叉树及其基本性质1、二叉树及其基本概念二叉树是一种很有用的非线性结构具有以下两个特点:①非空二叉树只有一个根结点;②每一个结点最多有两棵子树且分别称为该结点的左子树和右子树在二叉树中每一个结点的度最大为2即所有子树(左子树或右子树)也均为二叉树另外二叉树中的每个结点的子树被明显地分为左子树和右子树在二叉树中一个结点可以只有左子树而没有右子树也可以只有右子树而没有左子树当一个结点既没有左子树也没有右子树时该结点即为叶子结点父结点(根)在树结构中每一个结点只有一个前件称为父结点没有前件的结点只有一个称为树的根结点简称树的根例如在图1-1中结点A是树的根结点子结点和叶子结点在树结构中每一个结点可以有多个后件称为该结点的子结点没有后件的结点称为叶子结点例如在图1-1中结点DEF均为叶子结点度在树结构中一个结点所拥有的后件的个数称为该结点的度所有结点中最大的度称为树的度例如在图1-1中根结点A和结点B的度为2结点C的度为1叶子结点DEF的度为0所以该树的度为2深度定义一棵树的根结点所在的层次为1其他结点所在的层次等于它的父结点所在的层次加1 树的最大层次称为树的深度例如在图1-1中根结点A在第1层结点BC在第2层结点DEF在第3层该树的深度为3子树在树中以某结点的一个子结点为根构成的树称为该结点的一棵子树2、二叉树基本性质二叉树具有以下几个性质:性质1:在二叉树的第k层上最多有2k-1(k≥1)个结点;性质2:深度为m的二叉树最多有2m-1个结点;性质3:在任意一棵二叉树中度为0的结点(即叶子结点)总是比度为2的结点多一个性质4:具有n个结点的二叉树其深度至少为[log2n]+1其中[log2n]表示取log2n的整数部分3、满二叉树与完全二叉树满二叉树是指这样的一种二叉树:除最后一层外每一层上的所有结点都有两个子结点在满二叉树中每一层上的结点数都达到最大值即在满二叉树的第k层上有2k-1个结点且深度为m的满二叉树有2m-1个结点完全二叉树是指这样的二叉树:除最后一层外每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点对于完全二叉树来说叶子结点只可能在层次最大的两层上出现:对于任何一个结点若其右分支下的子孙结点的最大层次为p则其左分支下的子孙结点的最大层次或为p或为p+1完全二叉树具有以下两个性质:性质5:具有n个结点的完全二叉树的深度为[log2n]+1性质6:设完全二叉树共有n个结点如果从根结点开始按层次(每一层从左到右)用自然数12......n给结点进行编号则对于编号为k(k=12......n)的结点有以下结论:①若k=1则该结点为根结点它没有父结点;若k>1则该结点的父结点编号为INT(k/2)②若2k≤n则编号为k的结点的左子结点编号为2k;否则该结点无左子结点(显然也没有右子结点)③若2k+1≤n则编号为k的结点的右子结点编号为2k+1;否则该结点无右子结点考点8 二叉树的遍历在遍历二叉树的过程中一般先遍历左子树再遍历右子树在先左后右的原则下根据访问根结点的次序二叉树的遍历分为三类:前序遍历、中序遍历和后序遍历(1)前序遍历:先访问根结点、然后遍历左子树最后遍历右子树;并且在遍历左、右子树时仍然先访问根结点然后遍历左子树最后遍历右子树ABDECF(2)中序遍历:先遍历左子树、然后访问根结点最后遍历右子树;并且在遍历左、右子树时仍然先遍历左子树然后访问根结点最后遍历右子树DBEACF(3)后序遍历:先遍历左子树、然后遍历右子树最后访问根结点;并且在遍历左、右子树时仍然先遍历左子树然后遍历右子树最后访问根结点DEBFCA考点9 顺序查找查找是指在一个给定的数据结构中查找某个指定的元素从线性表的第一个元素开始依次将线性表中的元素与被查找的元素相比较若相等则表示查找成功;若线性表中所有的元素都与被查找元素进行了比较但都不相等则表示查找失败例如在一维数组[21462499577786]中查找数据元素98首先从第1个元素21开始进行比较与要查找的数据不相等接着与第2个元素46进行比较以此类推当进行到与第4个元素比较时它们相等所以查找成功如果查找数据元素100则整个线性表扫描完毕仍未找到与100相等的元素表示线性表中没有要查找的元素在下列两种情况下也只能采用顺序查找:(1)如果线性表为无序表则不管是顺序存储结构还是链式存储结构只能用顺序查找(2)即使是有序线性表如果采用链式存储结构也只能用顺序查找考点10 二分法查找二分法查找也称拆半查找是一种高效的查找方法能使用二分法查找的线性表必须满足两个条件:用顺序存储结构;线性表是有序表在本书中为了简化问题而更方便讨论"有序"是特指元素按非递减排列即从小到大排列但允许相邻元素相等下一节排序中有序的含义也是如此顺序查找法每一次比较只将查找范围减少1而二分法查找每比较一次可将查找范围减少为原来的一半效率大大提高对于长度为n的有序线性表在最坏情况下二分法查找只需比较log2n次而顺序查找需要比较n次考点11 排序冒泡排序法和快速排序法都属于交换类排序法(1)冒泡排序法首先从表头开始往后扫描线性表逐次比较相邻两个元素的大小若前面的元素大于后面的元素则将它们互换不断地将两个相邻元素中的大者往后移动最后最大者到了线性表的最后然后从后到前扫描剩下的线性表逐次比较相邻两个元素的大小若后面的元素小于前面的元素则将它们互换不断地将两个相邻元素中的小者往前移动最后最小者到了线性表的最前面对剩下的线性表重复上述过程直到剩下的线性表变空为止此时已经排好序在最坏的情况下冒泡排序需要比较次数为n(n-1)/2(2)快速排序法任取待排序序列中的某个元素作为基准(一般取第一个元素)通过一趟排序将待排元素分为左右两个子序列左子序列元素的排序码均小于或等于基准元素的排序码右子序列的排序码则大于基准元素的排序码然后分别对两个子序列继续进行排序直至整个序列有序二级C语言公共基础知识之软件工程考点1 软件工程基本概念1.软件定义与软件特点软件指的是计算机系统中与硬件相互依存的另一部分包括程序、数据和相关文档的完整集合程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序的开发、维护和使用有关的图文资料可见软件由两部分组成:(1)机器可执行的程序和数据;(2)机器不可执行的与软件开发、运行、维护、使用等有关的文档根据应用目标的不同软件可分应用软件、系统软件和支撑软件(或工具软件)名称描述应用软件为解决特定领域的应用而开发的软件系统软件计算机管理自身资源提高计算机使用效率并为计算机用户提供各种服务的软件支撑软件(或工具软件)支撑软件是介于两者之间协助用户开发软件的工具性软件2.软件工程为了摆脱软件危机提出了软件工程的概念软件工程学是研究软件开发和维护的普遍原理与技术的一门工程学科所谓软件工程是指采用工程的概念、原理、技术和方法指导软件的开发与维护软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面软件工程包括3个要素:方法、工具和过程名称描述方法方法是完成软件工程项目的技术手段工具工具支持软件的开发、管理、文档生成过程过程支持软件开发的各个环节的控制、管理考点2 软件生命周期1.软件生命周期概念软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期一般包括可行性分析研究与需求分析、设计、实现、测试、交付使用以及维护等活动如图3-1所示软件生命周期分为3个时期共8个阶段(1)软件定义期:包括问题定义、可行性研究和需求分析3个阶段;(2)软件开发期:包括概要设计、详细设计、实现和测试4个阶段;(3)运行维护期:即运行维护阶段软件生命周期各个阶段的活动可以有重复执行时也可以有迭代如图3-1所示2.软件生命周期各阶段的主要任务任务描述问题定义确定要求解决的问题是什么可行性研究与计划制定决定该问题是否存在一个可行的解决办法指定完成开发任务的实施计划需求分析对待开发软件提出需求进行分析并给出详细定义编写软件规格说明书及初步的用户手册提交评审软件设计通常又分为概要设计和详细设计两个阶段给出软件的结构、模块的划分、功能的分配以及处理流程这阶段提交评审的文档有概要设计说明书、详细设计说明书和测试计划初稿软件实现在软件设计的基础上编写程序这阶段完成的文档有用户手册、操作手册等面向用户的文档以及为下一步作准备而编写的单元测试计划软件测试在设计测试用例的基础上检验软件的各个组成部分编写测试分析报告运行维护将已交付的软件投入运行同时不断的维护进行必要而且可行的扩充和删改考点3 软件设计基本概念从技术观点上看软件设计包括软件结构设计、数据设计、接口设计、过程设计(1)结构设计定义软件系统各主要部件之间的关系;(2)数据设计将分析时创建的模型转化为数据结构的定义;(3)接口设计是描述软件内部、软件和协作系统之间以及软件与人之间如何通信;(4)过程设计则是把系统结构部件转换为软件的过程性描述从工程管理角度来看软件设计分两步完成:概要设计和详细设计(1)概要设计将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;(2)详细设计确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节考点4 软件设计的基本原理1、软件设计中应该遵循的基本原理和与软件设计有关的概念(1)抽象:软件设计中考虑模块化解决方案时可以定出多个抽象级别抽象的层次从概要设计到详细设计逐步降低(2)模块化:模块是指把一个待开发的软件分解成若干小的简单的部分模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程(3)信息隐蔽:信息隐蔽是指在一个模块内包含的信息(过程或数据)对于不需要这些信息的其他模块来说是不能访问的(4)模块独立性:模块独立性是指每个模块只完成系统要求的独立的子功能并且与其他模块的联系最少且接口简单模块的独立程度是评价设计好坏的重要度量标准衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准内聚性是信息隐蔽和局部化概念的自然扩展一个模块的内聚性越强则该模块的模块独立性越强一个模块与其他模块的耦合性越强则该模块的模块独立性越弱2、衡量软件模块独立性使用耦合性和内聚性两个定性的度量标准内聚性是度量一个模块功能强度的一个相对指标内聚是从功能角度来衡量模块的联系它描述的是模块内的功能联系内聚有如下种类它们之间的内聚度由弱到强排列:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚耦合性是模块之间互相连接的紧密程度的度量耦合性取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口耦合可以分为下列几种它们之间的耦合度由高到低排列:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合在程序结构中各模块的内聚性越强则耦合性越弱一般较优秀的软件设计应尽量做到高内聚低耦合即减弱模块之间的耦合性和提高模块内的内聚性有利于提高模块的独立性考点5 结构化分析方法1、结构化分析方法的定义结构化分析方法就是使用数据流图(DFD)、数据字典(DD)、结构化英语、判定表和判定树的工具来建立一种新的、称为结构化规格说明的目标文档结构化分析方法的实质是着眼于数据流、自顶向下、对系统的功能进行逐层分解、以数据流图和数据字典为主要工具建立系统的逻辑模型2、结构化分析方法常用工具(1)数据流图(DFD)数据流图是系统逻辑模型的图形表示即使不是专业的计算机技术人员也容易理解它因此它是分析员与用户之间极好的通信工具(2)数据字典(DD)数据字典是对数据流图中所有元素的定义的集合是结构化分析的核心数据流图和数据字典共同构成系统的逻辑模型没有数据字典数据流图就不严格若没有数据流图数据字典也难于发挥作用数据字典中有4种类型的条目:数据流、数据项、数据存储和加工(3)判定表有些加工的逻辑用语言形式不容易表达清楚而用表的形式则一目了然如果一个加工逻辑有多个条件、多个操作并且在不同的条件组合下执行不同的操作那么可以使用判定表来描述(4)判定树判定树和判定表没有本质的区别可以用判定表表示的加工逻辑都能用判定树表示3、软件需求规格说明书软件需求规格说明书是需求分析阶段的最后成果是软件开发的重要文档之一它的特点是具有正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性考点6 软件测试的目的和准则1.软件测试的目的(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试用例(test case)能发现迄今为止尚未发现的错误(3)一次成功的测试是能发现至今为止尚未发现的错误测试的目的是发现软件中的错误但是暴露错误并不是软件测试的最终目的测试的根本目的是尽可能多地发现并排除软件中隐藏的错误2.软件测试的准则根据上述软件测试的目的为了能设计出有效的测试方案以及好的测试用例软件测试人员必须深入理解并正确运用以下软件测试的基本准则(1)所有测试都应追溯到用户需求(2)在测试之前制定测试计划并严格执行(3)充分注意测试中的群集现象(4)避免由程序的编写者测试自己的程序(5)不可能进行穷举测试(6)妥善保存测试计划、测试用例、出错统计和最终分析报告为维护提供方便考点7 软件测试的方法和实施【考点精讲】1、软件测试方法软件测试具有多种方法依据软件是否需要被执行可以分为静态测试和动态测试方法如果依照功能划分可以分为白盒测试和黑盒测试方法1.静态测试和动态测试(1)静态测试包括代码检查、静态结构分析、代码质量度量等其中代码检查分为代码审查、代码走查、桌面检查、静态分析等具体形式(2)动态测试静态测试不实际运行软件主要通过人工进行分析动态测试就是通常所说的上机测试是通过运行软件来检验软件中的动态行为和运行结果的正确性动态测试的关键是使用设计高效、合理的测试用例测试用例就是为测试设计的数据由测试输入数据和预期的输出结果两部份组成测试用例的设计方法一般分为两类:黑盒测试方法和白盒测试方法2.黑盒测试和白盒测试(1)白盒测试白盒测试是把程序看成装在一只透明的白盒子里测试者完全了解程序的结构和处理过程它根据程序的内部逻辑来设计测试用例检查程序中的逻辑通路是否都按预定的要求正确地工作(2)黑盒测试黑盒测试是把程序看成一只黑盒子测试者完全不了解或不考虑程序的结构和处理过程它根据规格说明书的功能来设计测试用例检查程序的功能是否符合规格说明的要求2、软件测试的实施软件测试过程分4个步骤即单元测试、集成测试、验收测试和系统测试单元测试是对软件设计的最小单位--模块(程序单元)进行正确性检验测试单元测试的技术可以采用静态分析和动态测试集成测试是测试和组装软件的过程主要目的是发现与接口有关的错误主要依据是概要设计说明书集成测试所设计的内容包括:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试等集成测试时将模块组装成程序通常采用两种方式:非增量方式组装和增量方式组装确认测试的任务是验证软件的功能和性能以及其他特性是否满足了需求规格说明中确定的各种需求包括软件配置是否完全、正确确认测试的实施首先运用黑盒测试方法对软件进行有效性测试即验证被测软件是否满足需求规格说明确认的标准系统测试是通过测试确认的软件作为整个基于计算机系统的一个元素与计算机硬件、外设、支撑软件、数据和人员等其他系统元素组合在一起在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试系统测试的具体实施一般包括:功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试等考点8 程序的调试在对程序进行了成功的测试之后将进入程序调试(通常称Debug即排错)程序的调试任务是诊断和改正程序中的错误调试主要在开发阶段进行程序调试活动由两部分组成一是根据错误的迹象确定程序中错误的确切性质、原因和位置;二是对程序进行修改排除这个错误程序调试的基本步骤:(1)错误定位从错误的外部表现形式入手。
c语言实验原理
C语言实验原理是指在进行C语言的实验或项目时所采用的基本原理和方法。
下面将介绍C语言实验的一般原理。
1. 程序结构设计:C语言实验的第一步是设计程序的整体结构。
这包括确定程序的功能和需求,根据需求设计出合适的程序模块和函数,并安排它们之间的交互关系。
2. 数据结构设计:数据结构设计是指确定程序所需的数据类型和数据结构。
在C语言中,常用的数据结构包括数组、结构体、指针等。
根据实验需求,选择适当的数据结构来存储和操作数据。
3. 算法设计:算法设计是指确定实现程序功能所需的具体步骤和方法。
在C语言中,常用的算法包括顺序结构、选择结构、循环结构等。
根据实验需求,选择合适的算法来实现程序功能。
4. 模块化设计:模块化设计是指将程序划分为若干个独立的模块,并为每个模块定义相应的函数和变量。
这样可以增加程序的可读性和可维护性,也方便进行程序调试和测试。
5. 编码和调试:根据设计好的程序结构、数据结构和算法,使用C语言编写程序代码。
在编码过程中,要注意代码的规范
性和可读性。
完成编码后,进行调试工作,确保程序功能的正确性和稳定性。
6. 测试和评估:完成编码和调试后,对程序进行测试和评估。
可以设计一些测试用例,验证程序在各种情况下的正确性和鲁棒性。
根据测试结果进行程序修正和改进,直到达到预期的效果。
总之,C语言实验原理包括程序结构设计、数据结构设计、算法设计、模块化设计、编码和调试、测试和评估等方面。
通过遵循这些原理,可以有效地实现C语言实验的目标。
C语言程序设计知识结构单元C语言是一种广泛应用于系统编程和应用程序开发的高级编程语言。
它具有简洁、灵活、高效的特点,在许多领域被广泛应用,如操作系统、嵌入式系统、网络编程、游戏开发等。
C语言程序设计知识结构单元主要包括基本概念、数据类型、控制语句、函数、数组、指针、结构体、文件操作等内容。
以下是对这些知识结构单元的详细介绍:1.基本概念C语言是一种结构化、过程化的编程语言,其程序由代码块组成,每个代码块由语句构成。
C语言的程序由一个或多个函数组成,其中一个是主函数main,程序从main函数开始执行。
C语言程序中的注释以/*和*/夹在中间,用于对代码进行解释和说明。
变量是程序中存储数据的基本单元,每个变量有类型、标识符和值。
2.数据类型C语言数据类型包括基本数据类型(int、char、float、double)和复合数据类型(数组、结构体、指针)。
基本数据类型用于存储简单的数据,如整数、字符、浮点数等;复合数据类型可以存储多个相关的数据。
C语言中的数据类型决定了变量的取值范围和存储方式。
3.控制语句控制语句用于控制程序的执行流程,包括顺序结构、选择结构和循环结构。
顺序结构是指程序按照代码顺序执行;选择结构通过if、else语句实现条件分支;循环结构通过while、for、do while语句实现重复执行。
控制语句用于实现程序的分支和循环逻辑。
4.函数函数是C语言程序中的基本模块,用于实现特定的功能。
函数由函数头和函数体组成,函数头包括函数名、参数列表和返回值类型;函数体包括函数执行的代码。
函数可以调用其他函数,实现模块化设计和重用代码。
C语言中的主函数main是程序的入口点。
5.数组数组是一种数据结构,用于存储一组相同类型的数据。
数组由多个元素组成,每个元素有唯一的索引号。
C语言中的数组可以是一维数组、多维数组或字符数组。
数组在内存中是连续存储的,可以通过下标访问数组元素。
6.指针指针是C语言中的重要概念,用于存储变量的地址。
C语言主要课程包括:
1.C语言语法和语义:包括变量、数据类型、运算符、控制结构、函数等。
2.C语言算法和数据结构:如数组、链表、树、栈和队列等。
3.C语言开发实际应用程序:如文件处理、网络编程、数据库编程等。
4.数据结构和算法:数据结构和算法是程序设计的核心,一个程序设计的好坏,除了
程序界面是否漂亮外,最重要的就是数据结构和算法。
常用的数据结构有几十种,算法更是无处不在。
要学会使用已经设计好的数据结构和算法,更要学会设计自己的数据结构和算法。
5.Linux系统编程:因为越来越多的公司采用Linux系统做服务器,各个公司都开始
招聘Linux系统环境下C语言程序员,因为Linux和Unix一样,都是使用C语言开发的,所以在Linux环境下使用C语言编程是如鱼得水。
6.数据库:学习C语言,还有一点非常重要,那就是数据库。
此外,还包括《C语言程序设计》这一课程,它是计算机专业一门重要的专业必修课程,是学习《数据结构》、《Java程序设计》、《C#程序设计》等课程的必备
支撑课程。
该课程在计算机专业教学计划中占有重要的地位和作用,其重要性不仅仅体现在一般意义上的编程能力的培养,更体现在能够引导学生实现问题求解思维方式的转换。
以上信息仅供参考,建议咨询专业人士获取更准确的信息。
《C语言程序设计》课程标准一、课程性质本课程是信息管理与信息系统专业(3+4)中职段的专业必修课,是本科段学习《C++程序设计》、《数据结构》、《JAVA》的前导课程,是一门计算机动漫与游戏制作(3+4)专业衔接课程。
本课程重点是C语言基础知识、三种基本结构:顺序、选择和循环程序设计方法以及数组、函数和文件。
为学生进一步学习相应专业知识奠定程序设计语言基础。
本课程旨在培养学生面向过程的编程能力、逻辑思维能力以及分析问题解决问题的综合能力。
二、学时与学分144学时,8学分。
三、课程设计思路本课程应体现以服务发展为宗旨、以促进就业为导向,按照立德树人的要求,突出核心素养、必备品格、关键能力,兼顾中高职课程衔接,高度融合职业技能学习和职业精神培养。
1.依据“XX中等专业学校信息管理与信息系统专业(3+4)专业中职段实施性人才培养方案”中确定的培养目标、综合素质及职业能力按照知识与技能、过程与方法、情感态度与价值观三个维度,围绕本科段程序设计语言教学要求,结合本课程的性质和以生为本的教学理念,确定课程目标。
2.根据“江苏省中等职业教育计算机动漫与游戏制作专业职业能力分析表”,结合学生职业生涯发展、中高职分段培养等需要,注重课程内容与职业标准对接,教学过程与工作过程对接,融合程序设计的新知识、新技术、新方法,确定课程内容。
3.以工作过程为导向,遵循学生认知和技能形成规律,依据由易到难、简单到复杂的原则,统筹安排模块、单元的顺序,课程内容组织注重理论实践一体化。
四、课程目标通过对本课程的学习,使学生初步具备分析问题、解决问题的能力,养成良好的程序设计风格,积累和提高基本的程序设计能力及结构化程序设计基本思想。
通过使用VC++环境提高程序设计和调试的技能。
为后续本科段程序设计课程的学习打下良好的基础,达到以下具体目标:掌握三种基本结构程序设计思想;培养学生阅读、分析和设计算法的能力;进行必要的程序设计基本技能训练;掌握调试程序的基本技能五、课程内容与要求六、实施建议(一)教与学1.教学方法(1)“举一反三”教学法C语言编程较为灵活,因此教学过程应根据学生的实际情况因材施教。
“程序设计与数据结构”教学大纲课程名称:程序设计与数据结构英文名称:Program Design and Data Structure学时:96学分:6课程类型:必修课程性质:专业基础课适用专业:自动化(交通信息工程及控制)先修课程:计算机科学与编程导论开课学期:第1、2学期开课院系:信息科学与技术学院一、课程的教学目标与任务本课程培养学生较熟练地掌握C语言程序设计的基本技能,掌握各种基本数据结构和算法。
通过本课程的学习,掌握C语言基础知识;掌握简单算法和数据结构的基本设计方法;掌握复杂数据结构(例如栈和队列以及链表)的含义并能简单应用,建立程序设计的思想,培养学生的问题解决能力和实际编程能力;了解并初步掌握当前软件行业公认的程序设计风格和编程实践。
学生应掌握各种基本数据结构的概念、实现方法及涉及的基本算法,并能用这些数据结构和算法解决相关的应用问题,为进一步学习相关学科打下坚实的基础。
通过本课程的学习。
重点是阐述程序设计思想和各种数据结构及其相关算法,培养学生分析问题和使用程序和数据结构解决问题的能力。
二、本课程与其它课程的联系和分工“计算机科学与编程导论”是本课程的先修课程。
具体分工是:由计算机科学与编程导论课程建立对计算机的基本认识,了解软件的构成及分类,了解程序的运行原理和过程;由本课程介绍程序设计基础和软件开发方法,C语言的基本语法和语义(包括变量、简单数据类型、表达式和语句、输入和输出基础、顺序、条件和循环控制结构、函数定义、函数调用和参数传递等关于程序设计的基本要素),基本数据结构和算法,使用C语言进行程序设计的方法以及使用程序解决问题的方法。
与本课程关联的有相同学期开设的“程序语言设计实验”独立实验课,此外,为增强软件开发能力,在短二期设置相应的能力训练实践课程“软件基础训练”。
本课程为计算机学科的多个后续课程打下基础,如计算机网络、课外创新实践等。
三、课程内容及基本要求第一部分:C语言程序设计(一)计算机与程序设计概述(2学时)主要内容:(1)计算机软件分类(2)计算机语言(3)程序执行的原理和过程(4)软件开发方法1.基本要求了解计算机软件的分类以及计算机语言的分类;理解程序执行的原理和过程;了解基本的软件开发方法和应用软件的开发方法。
991“数据结构与C语言程序设计”考试大纲(2019版)2019年“数据结构与C语言程序设计”考试内容包括“数据结构”与“C语言程序设计”两门课程的内容,各占比例50%。
试卷满分为150分。
“数据结构”部分一、概述1.数据的逻辑结构与存储结构的基本概念;2.算法的定义、基本性质以及算法分析的基本概念,包括采用大 形式表示时间复杂度和空间复杂度。
二、线性表1.线性关系、线性表的定义,线性表的基本操作;2.线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和双向链表)的构造原理;3.在以上两种存储结构的基础上对线性表实施的基本操作,包括顺序表的插入与删除、链表的建立、插入与删除、查找等操作对应的算法设计(含递归算法的设计)。
三、数组1.一维数组和二维数组的存储;2.矩阵的压缩存储的基本概念;3.对称矩阵、对角矩阵以及三角矩阵的压缩存储。
四、堆栈与队列1.堆栈与队列的基本概念与基本操作;2.堆栈与队列的顺序存储结构与链式存储结构的构造原理;3.在不同存储结构的基础上对堆栈与队列实施插入与删除等基本操作的算法设计;4.堆栈和队列在解决实际问题中应用。
五、树与二叉树1.树与二叉树的基本概念,基本特征、名词术语;2.完全二叉树与满二叉树的基本概念,二叉树的基本性质及其应用;3.二叉树的顺序存储结构与二叉链表存储结的基本原理;4.二叉树的前序遍历、中序遍历、后序遍历和按层次遍历,重点是二叉树在以二叉链表作为存储结构基础上各种遍历算法(包括非递归算法)的设计与应用;5.二叉排序树的基本概念、建立(插入)、查找以及平均查找长度ASL的计算。
六、图1.图的基本概念、名词术语;2.图的邻接矩阵存储方法和邻接表(含逆邻接表)存储方法的构造原理及特点;3.图的深度优先搜索与广度优先搜索;4.最小(代价)生成树、最短路径、AOV网与拓扑排序的基本概念。
七、文件及查找1.顺序查找法以及平均查找长度(ASL)的计算;2.折半查找法以及平均查找长度(ASL)的计算,包括查找过程对应的“判定树”的构造;3.散列(Hash)表的构造、散列函数的构造,散列冲突的基本概念、处理散列冲突的基本方法以及散列表的查找和平均查找长度的计算。
湖南师范大学硕士研究生入学考试自命题考试大纲
考试科目代码:[967] 考试科目名称:C语言程序设计和数据结构
一、试卷结构
1) 试卷成绩及考试时间
本试卷满分为150分,考试时间为180分钟。
2)答题方式:闭卷、笔试
3)试卷内容结构
C语言程序设计部分 80% 数据结构部分 20%
4)题型结构
a: 单项选择题,共40分
b: 程序填空题,共30分
c: 程序阅读题,共25分
d: 编程题,共45分
e: 分析题,共10分
二、考试内容与考试要求
(一)C语言程序设计部分
考试内容
1、基本知识
(1)C语言的数据类型
(2)C语言中各种类型常量的表示法
(3)各类数值型数据间的混合运算
(4)C运算符
(5)关系表达式及运算,逻辑表达式及运算
2、顺序、选择与循环结构
(1)赋值语句,格式输入与输出
(2)if语句,switch语句
(3)goto、while、do-while、for、break、continue语句3、数组
(1)一维数组的定义和引用
(2)二维数组的定义和引用
(3)字符数组的定义和引用,字符串及其处理函数
4、函数
(1)函数定义与调用
(2)局部变量和全局变量
(3)变量的存储类型
(4)内部函数与外部函数
5、宏定义
(1)带参数的宏定义
(2)包含文件的处理
6、指针
(1)地址和指针的概念
(2)数组的指针和指向数组的指针变量
(3)字符串的指针和指向字符串的指针变量
(4)函数的指针和指向函数的指针变量
(5)指针数组和指向指针的数组
7、结构体和共同体
(1)结构体变量的定义和使用方法
(2)指向结构体类型变量的指针
(3)用指针处理链表
(4)共同体变量的定义和使用方法
(5)枚举类型
8、位运算
(1)位运算符和位运算
(2)位段
9、文件
(1)文件类型指针
(2)文件操作,包括打开、关闭、读写和定位等
考试要求
1、掌握C语言的基本数据类型、各种运算符和表达式。
2、掌握C语言的基本控制结构。
3、掌握数组的定义、数组元素的引用、数组的初始化,掌握与字符串相关的库函数。
4、掌握函数的定义语法,掌握函数调用中参数的传递机制;掌握局部变量和全局变量的有效范围,掌握auto、static、register、extern变量的概念及特性。
5、掌握无参数和有参数的宏定义,掌握文件包含的使用。
6、掌握结构体类型变量的定义、结构体变量的引用、结构体变量的初始化方法,掌握结构体数组的定义、初始化和结构体数组的应用,掌握共同体变量的定义和使用方法,掌握枚举类型的一般概念、定义格式及使用方法。
7、掌握地址和指针的基本概念,重点掌握如何使用指针来处理数组、字符串以及结构体,掌握函数指针的基本概念以及使用。
8、了解位运算符的使用方法,能利用它们处理具体问题;了解位段的概念及使用规则。
9、掌握FILE的定义以及对文件进行的各种操作的库函数。
(二)数据结构部分
考试内容
(1)数据结构的基本概念,数据的逻辑结构、存储结构。
(2)算法的定义、算法的基本特性以及算法分析的基本概念。
2、线性表
(1)线性关系、线性表的定义,线性表的基本操作。
(2)线性表的顺序存储结构与链式存储结构(包括单链表、循环链表和双向链表)的构造原理。
在以上两种存储结构上对线性表实施的最主要的操作(包括三种链表的建立、插入和删除、检索等)的算法设计。
3、堆栈与队列
(1)堆栈与队列的基本概念、基本操作。
(2)堆栈与队列的顺序存储结构与链式存储结构的构造原理。
(3)在不同存储结构的基础上对堆栈与队列实施插入与删除等基本操作对应的算法设计。
4、串
(1)串的基本概念、串的基本操作和存储结构。
(2)串的模式匹配算法和改进的KMP算法
5、数组和广义表
(1)数组的概念、多维数组的实现
(2)对称矩阵和稀疏矩阵的压缩存储
(3)广义表的基本概念
6、树与二叉树
(1)树的定义和性质
(2)二叉树的概念、性质和实现
(3)遍历二叉树和线索二叉树
(4)树和森林
(5)赫夫曼树及其应用
(6)树的计数
(1)图的定义,基本概念,图的分类,常用名词术语。
(2)图的邻接矩阵存储方法、邻接表存储方法的构造原理。
(3)图的遍历操作。
(4)最小生成树,最短路径,AOV网与拓扑排序。
8、文件及查找
(1)数据文件的基本概念和基本术语,数据文件的基本操作。
(2)顺序文件、索引文件、散列(Hash)文件。
(3)顺序文件的顺序查找方法、排序连续顺序文件的折半查找方法以及其他文件的基本查找方法。
9、内排序
(1)排序的基本概念,排序方法的分类。
(2)插入排序法(含折半插入排序法)、选择排序法、泡排序法、快速排序法、堆积排序法、归并排序、基数排序。
各种排序方法排序的原理、规律和特点,各种排序算法的时空复杂度简单分析。
考试要求
1、掌握有关数据结构的基本概念,包括数据的逻辑结构、存储结构。
2、掌握算法的基本概念以及算法分析的基本方法。
3、掌握线性表的基本概念,在两种存储结构下的构造原理及相应的操作;
4、掌握堆栈和队列的基本概念与特征以及在两种存储结构下如何对堆栈和队列进行插入和删除等操作,具备使用堆栈与队列解决实际问题的能力。
5、掌握串的基本概念以及串的存储结构和相关的算法。
6、掌握数组、广义表和稀疏矩阵的基本概念以及基本操作。
7、掌握树型结构的逻辑特征以及各种存储结构的构造原理,能够熟练使用基于树的三种遍历方法。
8、掌握二叉排序树的逻辑特征、建立过程,具备使用其解决实际问题的能力。
9、了解图的逻辑结构的特点以及常用的两种存储方法,了解最小生成树(Prim算法和Kruskal算法)、最短路径、拓扑排序的求解过程。
10、掌握各种顺序文件的结构与相应的查找方法以及各种查找算法之间时空效率的差异;了解散列文件的建立、散列函数的选择(构造)原则、处理散列冲突的方法以及了解散列文件的建立、散列函数的选择(构造)原则、处理散列冲突的方法以及基于散列的查找。
11、掌握各种排序方法的排序特点和排序过程,能够对每一种排序方法在时间、空间、排序的稳定性等方面进行简单分析。
三、参考书目
[1]谭浩强. C程序设计(第四版). 清华大学出版社. 2010
[2]严蔚敏, 吴伟民. 数据结构(C语言版). 清华大学出版社. 2011。