A.程序中第一条可执行语言B.程序中第一个函数C.程序中的main函数D.包含文件中的函数6.C语言中运算对象必须是整型的运算符是()。A.9 B.-2 C.-1 D.89.若x和y都是int型变量,x=100,y=200,则下面程序片段:printf;的输出结果是()。()四、程序填空下面程序用于计算n!......
2025-09-30
(1)算法的相关观念
算法是指一系列解决问题的清晰指令;4 个基本特征:可行性、确定性、有穷性、拥有足够的情报;两种基本要素:对数据对象的运算和操作、算法的控制结构(运算和操作时间的顺序);设计的基本方法有列举法、归纳法、递推法、递归法、减半递推技术和回溯法。算法的复杂度——算法的时间复杂度(执行算法所需要的计算T作量);算法的空间复杂度(执行算法所需的内存空间)。
(2)数据结构的基本概念
数据结构指相互有关联的数据元素的集合,即数据的组织形式。其中逻辑结构反映数据元素之间逻辑关系;存储结构为数据的逻辑结构在计算机存储空间中的存放形式,有顺序存储、链式存储、索引存储和散列存储4 种方式。
数据结构按各元素之间前后件关系的复杂度可划分为:a)线性结构有且只有一个根结点,且每个结点最多有一个直接前驱和一个直接后继的非空数据结构;b)非线性结构是不满足线性结构的数据结构。
(3)线性表及其顺序存储结构
线性表的基本概念:线性结构又称线性表,线性表是最简单也是景常用的一种数据结构。线性表的顺序存储结构:a)元素所占的存储空间必须连续;b)元素在存储空间的位置是按逻辑顺序存放的。
线性表的插入运算——在第i 个元素之前插入一个新元素的步骤:a)把原来第n 个结点至第i 个结点依次往后移一个元素位置;b)把新结点放在第i 个位置上;c)修正线性表的结点个数。在最坏情况下,即插入元素在第一个位置,线性表中所有元素均需要移动。
线性表的删除运算——删除第i 个位置的元素的步骤:a)把第i 个元素之后不包括第i 个元素的n-i 个元素依次前移一个位置;b)修正线性表的结点个数。
(4)栈和队列
栈的基本概念:栈是一种特殊的线性表,其插入运算与删除运算都只在线性表的一端进行,也被称为“先进后出”表或“后进先出”表;栈顶为允许插入与删除的一端;栈底为栈顶的另一端;空栈是指栈中没有元素的栈。
栈的特点:栈顶元素是最后被插入和最早被删除的元素;栈底元素是最早被插入和最后被删除的元素;栈有记忆作用;在顺序存储结构下,栈的插入和删除运算不需移动表中其他数据元素;栈顶指针top 动态反映了栈中元素的变化情况。
顺序存储和运算:人栈运算、退栈运算和读栈顶运算。
队列的基本概念:队列是指允许在一端进行插入,在另一端进行删除的线性表,又称“先进先出”的线性表;队尾是指允许插入的一端,用尾指针指向队尾元素;排头是指允许删除的一端,用头指针指向头元素的前一位置。
循环队列及其运算:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,包括入队运算与退队运算。入队运算是指在循环队列的队尾加入一个新元素。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。退队运算是指在循环队列的队头位置退出-个元素并赋给指定的变量。首先将队头指针进一,然后将排头指针指向的元素赋给指定的变量。当循环队列为空(s=0)时,不能进行退队运算,这种情况称为“下溢”。
(5)线性链表:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。
(6)树和二又树
树的基本概念:树是简单的非线性结构,树中有且仅有一个没有前驱的结点称“根”,其余结点分成m 个互不相交的有限集合{T1,T2,…,Tm},每个集合又是一棵树,称{T1,T2,…,Tm}为根结点的子树。
父结点:每一个结点只有一个前件,无前件的结点只有一个,称为树的根结点(简称树的根);子结点:每一个结点可以后多个后件,无后件的结点称为叶子结点;树的度:所有结点最大的度;树的深度:树的最大层次。
二叉树的定义:二叉树是一种非线性结构,是有限的结点集合,该集合为空(空二叉树)或由一个根结点及两棵互不相交的左右二叉子树组成。可分为满二叉树和完全二叉树,其中满二叉树一定是完全二叉树,但完全二叉树不一定是满二叉树。
二叉树具有如下两个特点:二叉树可为空,空的二叉树无结点,非空二叉树有且只有一个根结点;每个结点最多可有两棵子树,称为左子树和右子树。
二叉树的基本性质:a.在二叉树的第k 层上至多有2k-l个结点(k≥1);b.深度为m 的二叉树至多有2m-1 个结点;c.对任何一棵二叉树,度为0 的结点(即叶子结点)总是比度为2 的结点多一个;d.具有n 个结点的完全二叉树的深度至少为[log2n]+1,其中[log2n]表示log2n 的整数部分。(https://www.chuimin.cn)
满二叉树:满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。满二叉树在其第i 层上有2i-l个结点。从上面满二叉树定义可知,二叉树的每一层上的结点数必须都达到最大,否则就不是满二叉树。深度为1TI 的满二叉树有2m-1 个结点。
完全二叉树:完全二叉树是指这样的二叉树:除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。如果一棵具有n 个结点的深度为k 的二叉树,它的每一个结点都与深度为k 的满二叉树中编号为l~n 的结点一一对应。
二叉树的存储结构:二叉树通常采用链式存储结构,存储结点由数据域和指针域(左指针域和右指针域)组成。二叉树的链式存储结构也称二叉链表,对满二叉树和完全二叉树可按层次进行顺序存储。
二叉树的遍历:二叉树的遍历是指不重复地访问二叉树中所有结点,主要指非空二叉树,对于空二叉树则结束返回。二叉树的遍历包括前序遍历、中序遍历和后序遍历。
a)前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历有子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。前序遍历描述为:若二叉树为空,则执行空操作;否则,①访问根结点;②前序遍历左子树;③前序遍历右子树。
b)中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。中序遍历描述为:若二叉树为空,则执行空操作;否则,①中序遍历左子树;②访问根结点;③中序遍历右子树。
c)后序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后遍历右子树,最后访问根结点,并且在遍历左、有子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。后序遍历描述为:若二叉树为空,则执行空操作;否则,①后序遍历左子树;②后序遍历右子树;③访问根结点。
(7)查找技术
顺序查找:在线性表中查找指定的元素。最坏情况下,最后一个元素才是要找的元素,则需要与线性表中所有元素比较,比较次数为n。
二分查找:二分查找也称折半查找,它是一种高效率的查找方法。但二分查找有条件限制,它要求表必须用顺序存储结构,且表中元素必须按关键字有序(升序或降序均可)排列。对长度力n 的有序线性表,在最坏情况下,二分查找法只需比较log2n 次。
(8)排序技术
a)交换类排序法
冒泡排序:通过对待排序序列从后向前或从前向后,依次比较相邻元素的排序码,若发现逆序则交换,使较大的元素逐渐从前部移向后部或较小的元素逐渐从后部移向前部,直到所有元素有序为止。在最坏情况下,对长度为n 的线性表排序,冒泡排序需要比较的次数为n(n-1)/2。
快速排序是迄今为止所有内排序算法中速度最快的一种。它的基本思想是任取待排序序列中的某个元素作为基准(一般取第一个元素),通过一趟排序,将待排元素分为左右两个子序列,左子序列元素的排序码均小于或等于基准元素的排序码,右子序列的排序码则大于基准元素的排序码,然后分别对两个子序列继续进行排序,直至整个序列有序。最坏情况下,即每次划分,只得到一个序列,时间效率为O(n2)。
b)插入类排序法
简单插入排序法:把n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1 个元素,排序过程中每次从无序表中取m 第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为渐的有序表。在最坏情况下,即初始排序序列是逆序的情况下,比较次数为n(n-1)/2,移动次数为n(n-1)/2。
希尔排序法:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次直接插入排序。
c)选择类排序法。
简单选择排序法:扫描整个线性表,从中选择最小的元素,将它交换到表的最前面;然后对剩下的子表采用同样的方法,直到子表空为止。最坏情况下需要比较n(n-1)/2 次。
堆排序的方法:①将一个无序序列建成堆;②将堆顶元素(序列中的最大项)与堆中最后一个元素交换(最大项应该在序列的最后)。不考虑已经换到最后的那个元素,只考虑前n-l 个元素构成的子序列,将该子序列调整为堆。反复做步骤②,直到剩下的子序列空为止。在最坏情况下,堆排序法需要比较的次数为O(nlog2n)。
相关文章
A.程序中第一条可执行语言B.程序中第一个函数C.程序中的main函数D.包含文件中的函数6.C语言中运算对象必须是整型的运算符是()。A.9 B.-2 C.-1 D.89.若x和y都是int型变量,x=100,y=200,则下面程序片段:printf;的输出结果是()。()四、程序填空下面程序用于计算n!......
2025-09-30
A.1 B.9 C.10 D.203.关于break语句正确的说法是()。A.能出现在if语句中B.只能出现在循环体中C.可用在循环体和switch语句中D.可用在函数中的任何语句4.以下程序段输出结果正确的是()。......
2025-09-30
计算机语言的种类非常多,总的来说可分成机器语言、汇编语言和高级语言三大类。计算机发明之初,人们只能写出一串串由0、1 组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言。然而计算机是不认识这些符号的,这就需要一个专门的程序负责将这些符号翻译成二进制的机器语言,这种翻译程序被称为汇编程序。......
2025-09-30
A)标准模块文件的扩展名是.basB)标准模块文件是纯代码文件C)在标准模块中声明的全局变量可以在整个工程中使用D)在标准模块中不能定义过程在Visual Basic中,表达式3*2\5 Mod 3的值是()。A)1B)0C)3D)出现错误提示以下选项中,不合法的Visual Basic的变量名是()。若已把一个命令按钮的Default属性设置为True,则下面可导致按钮的Click事件过程被调用的操作是()。......
2025-09-30
A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度数据库应用系统中的核心问题是()。A)If Option1.Value ThenB)If Option1=True ThenC)If Value=True ThenD)If Option1 Then设窗体上有1个水平滚动条,已经通过属性窗口把它的Max属性设置为1,Min属性设置为100。......
2025-09-30
C语言中逻辑运算符及其含义见表3.2。表3.2逻辑运算符及其含义逻辑运算符“&&”和“||”是双目运算符,具有左结合性;“!”表3.3逻辑运算真值表C语言中进行逻辑表达式求值运算时,不但要注意逻辑运算符本身的运算规则,而且还必须要遵循下面的两条原则:·对逻辑表达式从左到右进行求解。......
2025-09-30
机器语言由0和1两个字符组成,称为二进制数。指令是计算机语言的最小组成单元,机器语言就是机器指令的集合。对人而言,不管是机器语言还是汇编语言,可读性都差,一般的人也难以理解,不利于计算机语言的推广普及。当然,计算机不能直接识别用高级语言编写的源程序,需要通过编译器将其翻译成机器语言产生目标程序,才能被计算机执行。......
2025-09-30
一个函数直接或间接地调用自己,称为函数的递归调用。所以函数递归调用的实现必须依靠系统提供一个特殊部件(堆栈)存放未完成的操作,以保证当递归调用结束回溯时不会丢失任何应该执行而没有执行的操作。为了理解函数递归调用的特性,参照例5.9的程序讨论函数递归调用的执行过程,为了讨论方便为程序加上行号。函数递归调用示例。......
2025-09-30
相关推荐