北京化工大学软件技术基础考试复习重点剖析.docx
- 文档编号:5195286
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:26.63KB
北京化工大学软件技术基础考试复习重点剖析.docx
《北京化工大学软件技术基础考试复习重点剖析.docx》由会员分享,可在线阅读,更多相关《北京化工大学软件技术基础考试复习重点剖析.docx(16页珍藏版)》请在冰豆网上搜索。
北京化工大学软件技术基础考试复习重点剖析
第一章算法
算法是解决某个特定问题的一种方法或一个过程。
算法的特性可行性;确定性;有穷性;输入;输出
数据结构:
简单地说,数据结构(DataStructure)是相互之间存在一种或多种特定关系的数据元素的集合
数据结构与算法的关系:
确定使用的数据结构,并在此基础上设计对此数据结构实施各种操作的算法;
算法描述语言是一种面向人而非机器的算法描述工具,
其他的描述工具还有:
传统流程图N-S结构化流程图伪代码
算法设计基本方法列举法归纳法递推法递归法减半递推技术回溯法
递推关系往往是归纳分析的结果;递归的基础是归纳法;
递归分类直接递归;间接递归
1voidhanoi(intn,charA,charB,charC){
2if(n==1)
3thenmove(1,A,C);
4else{5hanoi(n-1,A,C,B);
6move(n,A,C);
7hanoi(n-1,B,A,C);
8}
9}
voidtrial(inti,intn){
/*进入本函数时,在nxn棋盘前已放置了互不攻击的i-1个棋子。
现从第i行起后后续棋子选择合适的位置,当i>n时,求得合法布
局并输出。
*/
if(i>n)
then输出棋盘的当前布局;
elsefor(j=1;j<=n;++j){
在第i行第j列放一个棋子;
if(当前布局合法)trial(i+1,n);
移走第i行第j列的棋子;
}
}
算法时间复杂度指执行算法所需要的计算工作量。
算法空间复杂度指执行算法所需要的内存空间。
算法评价标准正确性可读性健壮性时间与空间效率
‰第二章数据结构
线性表定义线性表是由n(n≥0)个类型相同的数据元素组成的有限序列。
通常表示成下列形式:
L=(a1,a2,…,)其中L为线性表名称,ai为组成该线性表的数据元素;
顺序存储结构
线性表的顺序存储结构是指用一组连续的存储单元依次存储线性表中的每个数据元素。
线性表的逻辑结构与存储结构(物理结构)一致;线性表中所有元素所占存储空间是连续的
线性表中各元素按逻辑顺序依次存放;
顺序线性表插入在顺序线性表SL第idx个数据元素之前插入数据元素elem
voidinsert(SeqListSL,intidx,ElemTypeelem){
//检查是否有剩余空间
if(SL.length==MAX_LIST_SIZE)
returnERROR;//检查idx值是否合法
if(idx<0||idx>SL.length)
returnERROR;//将线性表第i个元素之后的所有元素向后移动
for(j=SL.length-1;j>=idx-1;j--)
SL.elems[j+1]=SL.elems[j];//将新元素的内容放入线性表的第i个位置,
SL.elems[idx-1]=elem;
SL.length++;
}
顺序线性表删除删除顺序线性表第idx个数据元素
ElemTypedelete(SeqListSL,intidx){//检测线性表是否为空
if(isEmpty(SL))
returnERROR;//检查idx值是否合法
if(idx<0||i>=SL.length)
returnERROR;//将欲删除的数据元素内容保存在变量elem中
ElemTypeelem=SL.elems[i-1];//将线性表第i+1个元素之后的所有元素向前移动
for(j=i;j SL.elems[j-1]=SL.elems[j]; SL.length--; returnelem; } 链式存储结构链式存储结构指用一组任意的存储单元(可以连续,也可以不连续)存储线性表中的数据元素,而数据元素之间的逻辑关系由存储结点的指针域来确定。 线性表中的数据元素在存储单元中的存放顺序与逻辑顺序不一定一致;‰访问数据元素时,只能由头指针进入链表,并通过结点的指针域向后扫描其余结点 链式线性表插入在链表LL中第idx个数据元素之前插入数据元素elem intinsert(LinkedListLL,intidx,ElemTypeelem){ llnode*p,s; intj;//开辟新结点空间 s=(llnode*)malloc(sizeof(llnode)); if(s==NULL)returnERROR; s->data=elem; if(idx<0||i>length(LL))returnERROR;//寻找第i-1个结点 for(p=LL.head,j=0;p&&j s->next=p->next;p->next=s; returnOK; } 链式线性表删除删除链表LL中的第idx个数据元素,并返回其值 ElemTypedelete(LinkedListLL,intidx){ llnode*p,s; intj; if(idx<0||idx>length(LL))returnERROR;//寻找第i-1个结点 for(p=LL.head,j=0;p&&j s=p->next; ElemTypeelem=s->data; p->next=s->next; free(s); returnelem; } 栈定义栈是一种特殊的线性表,即LIFO线性表(LastInFirstOut,后进先出)。 栈的特点在于限定插入和删除数据元素的操作只能在线性表的一端进行 顺序栈基本操作 入栈 voidpush(SeqStackSS,ElemTypeelem){ if(SS.top==MAX_STACK_SIZE-1) ERROR(“TheStackisfull”); elseSS.elems[++SS.top]=elem; } 出栈 ElemTypepop(SeqStackSS){ if(isEmpty(SS)) ERROR(“Stackisempty”); else returnSS.elems[SS.top--]; } 栈的链式存储结构 入栈 voidpush(LinkedStackLS,ELemTypeelem){ p=(lsnode*)malloc(sizeof(lsnode)); if(! p) ERROR(“Overflow”); else{ p->data=elem; p->next=LS.top; lS.top=p; } } 出栈 ElemTypepop(LinkedStackLS){ if(isEmpty(LS)) ERROR(“Stackisempty”); else{ ElemTypeelem=LS.top->data; p=LS.top; LS.top=p->next; free(p); returnelem; } } 队列定义队列也是一种特殊的线性表,即FIFO线性表(FirstInFirstOut,先进先出) 队列特殊性在于限定插入操作在线性表的一端进行,而删除操作在线性表的另一端;插入端和删除端都是浮动的。 通常我们将插入端称为队尾,用一个“队尾指针”指示;而删除端称为队头,用一个“队头指针”指示; 队列顺序存储 入对操作 voidenQueue(SeqQueueSQ,ElemTYpeelem){ if((SQ.rear+1)%MAX_QUEUE_SIZE==SQ.front) ERROR(“Overflow”); else{ SQ.rear=(SQ.rear+1)%MAX_QUEUE_SIZE; SQ.elems[SQ.rear]=elem; } } 出对操作 ElemTypedeQueue(SeqQueueSQ){ if(isEmpty(SQ)) ERROR(“Queueisempty”); else{ SQ.front=(Q.front+1)%MAX_QUEUE_SIZE returnSQ.elems[SQ.front]; } } 队列的链式存储 入对操作 voidenQueue(LinkedQueueLQ,ElemTypeelem){ s=(lqnode*)malloc(sizeof(lqnode)); if(! s) ERROR; s->data=elem; s->next=NULL; LQ.rear->next=s; LQ.rear=s; } 出对操作 ElemTypedeQueue(LinkedQueueLQ){ if(isEmpty(LQ)) ERROR; else{ ElemTypeelem=LQ.front->next->data; s=LQ.front->next; LQ.front->next=s->next; free(s); returnelem; } } 二叉树二叉树是另一种树形结构。 二叉树与树形结构的区别: ‰每个结点最多有两棵子树;‰子树有左右之分; 满二叉树如果一个深度为K的二叉树拥有2K-1个结点,则将它称为满二叉树。 完全二叉树‰有一棵深度为h,具有n个结点的二叉树,若将它与一棵同深度的满二叉树中的所有结点按从上到下,从左到右的顺序分别进行编号,且该二叉树中的每个结点分别与满二叉树中编号为1-n的结点位置一一对应,则称这棵二叉树为完全二叉树。 二叉树基本性质 性质一在二叉树的第i层上至多有 个结点(i≥1). 性质二深度为k的二叉树至多有 个结点(k≥1). 性质三对于任意一棵二叉树BT,如果度为0的结点个数为n0,度为2的结点个数为n2则有n0=n2+1. 性质四具有n个结点的完全二叉树的深度为⎣ n⎦+1。 其中,⎣ n⎦的结果是不大于⎣ n⎦的最大整数。 性质五对于有n个结点的完全二叉树中的所有结点按从上到下,从左到右的顺序进行编号,则对任意一个结点i(1≤i≤n),都有: o如果i=1,则结点i是这棵完全二叉树的根,没有双亲;否则其双亲结点的编号为⎣i/2⎦;o如果2i>n,则结点i没有左孩子;否则其左孩子结点的编号为2i;o如果2i+1>n,则结点i没有右孩子;否则其右孩结点的编号为2i+1; 图定义图是一个二元组 其中V是顶点的有穷非空集合,E是两个顶点之间关系的集合 基本概念 完全图具有n(n-1)条弧的有向图称作有向完全图; ‰具有n(n-1)/2条边的无向图称作无向完全图; 路径长度路径上边或弧的数目; 简单路径顶点没有重复出现的路径; 创建有向图邻接表 voidcreateGraph(AdjListadj,intn){//初始化顶点数组 for(i=0;i scanf(&adj[i].adjvex); adj[i].firstarc=NULL; }//输入弧 scanf(&i,&j); while(i){ s=(edgenode*)malloc(sizeof(edgenode));//创建新的弧结点 s->adgvex=j-1; s->nextarc=adj[i-1].firstarc;//将新的弧结点插入到相应的位置 adj[i-1].firstarc=s;//输入下一条弧 scanf(&i,&j); } } 图的遍历从图的某一顶点出发访遍图中所有顶点,且使每一顶点仅被访问一次,这一过程称为图的遍历。 两种遍历方式 ‰深度优先遍历树的先根遍历的扩展 ‰广度优先遍历树的层次遍历的扩展 第三章查找 查找‰在数据元素集合中查找满足某种条件的数据元素的过程称为查找; 顺序查找基本思想将查找表作为一个线性表,可以是顺序表,也可以是链表,依次用查找条件中给定的值与查找表中数据元素的关键字值进行比较,若某个记录的关键字值与给定值相等,则查找成功, 顺序表的顺序查找描述 /*设置了监视哨的顺序表查找,查找关键字值等于指定值k的记录, *若查找成功,返回记录存放位置的下标值,否则返回0。 */ intsearch(SeqListSL,KeyTypek){ i=n;//设置监视哨 SL[0].key=k; while(SL[i].key! =k) i--; returni; } 链表的顺序查找描述 /**LL为带头结点链表的头指针,查找关键字值等于k的记录, *查找成功,返回指向找到的结点的指针,查找失败返回空指针。 */ llnode*search(LinkedListLL,KeyTypek){ p=LL->next; while((p! =NULL)&&(p->key! =k)) p=p->next; returnp; } 折半查找描述 intsearch(SeqListSL,KeyTypek){//置初始查找范围的低、高端指针 low=1;high=n; while(low<=high){//计算中间项位置 mid=(low+high)/2; if(SL[mid].key==k) break;//找到,结束循环 elseif(k high=mid-1;//给定值k小 else low=mid+1;//给定值k大 } if(low<=high) returnmid;//查找成功 elsereturn0;//查找失败 } Hash函数的构造方法 Hash函数设计使各各关键字尽可能地均匀分布在Hash表中,即Hash码的均匀性要好; ‰Hash函数的计算要尽可能简单; Hash函数构造方法‰直接定址法质数取余法截断法平方取中法折叠法 冲突处理方法开放定址法链地址法再哈希法溢出区法 根据探测序列进行分类线性探测二次探测伪随机探测 快速排序描述 递归算法 voidquicksort(ElemTypea,intbegin,intend){ //初始化 i=begin;j=end;temp=a[i]; while(i while(i a[i]=a[j]; while(i a[j]=a[i]; } a[i]=temp; if(begin quicksort(a,begin,i-1);//对左侧分区域进行快速排序 if(i+1 quicksort(a,i+1,end);//对右侧分区域进行快速排序 } 第四章操作系统基本概念任务功能 操作系统概念用以控制和管理系统资源,方便用户使用计算机的程序集合。 管理计算机资源和控制用户程序执行以及方便用户使用的程序系统。 操作系统主要功能 处理机管理充分发挥处理机的作用,提高运行效率。 存储器管理对有限的内存储器进行分配,满足多个用户程序的需要。 设备管理‰有效的管理各种外部设备,提高设备的使用率。 ‰向用户提供简单易用的接口。 文件管理‰唯一的标识系统中的每组信息,进行合理的访问和控制。 ‰有效地组织这些信息,使用户能安全方便地访问。 用户接口向用户提供简单易用地使用计算机的手段。 进程(Process)是一个可并发执行的具有独立功能的程序关于某个数据集合的一次执行过程,也是操作系统进行资源分配和保护的基本单位。 进程和程序的区别 主要区别如下: ‰进程是一个动态的概念,进程的实质是程序的一次执行过程,动态性是进程的基本特征,同时进程是有一定的生命期的,而程序只是一组有序指令的集合,本身并无运动的含义,是静态的。 ‰并发性,并发性是进程的重要特征,引入进程的目的正是为了使其程序和其它程序并发执行,而程序(没有建立进程)是不能并发执行的。 ‰独立性,是指进程一个能独立运行、独立分配资源和独立调度的基本单位,凡未建立进程的程序,都不能作为一个独立的单位参加运行。 不同的进程可以包含同一个程序,同一个程序在执行中也可以产生多个进程。 进程状态进程的三种状态运行态(running)‰就绪态(ready)‰等待态(blocked) 进程状态转换关系 运行就绪 阻塞 进程调度 时间片用完 等待资源 获得资源 新进程结束 进程控制块(PCB,ProcessControlBlock) 进程调度 基本概念进程调度是按照某种策略和算法,挑选一个合适的就绪进程,并向它移交处理机的控制权。 进程调度方式可抢占式调度不可抢占式调度 调度算法简单轮转法优先数法多级队列调度 死锁基本概念定义如果在一个进程集合中的每个进程都在等待只能由该集合中的其他一个进程才能引发的事件,则称一组进程或系统此时发生了死锁。 死锁产生的原因系统资源不足;进程推进顺序不当; 解决死锁的主要方法有 ‰死锁预防通过设置某些限制破坏死锁产生的条件(除第一条件 外)来防止死锁的发生,缺点是资源利用率过低; ‰死锁避免在资源分配过程中,采取某种方法防止系统进入不 安全状态,从而避免死锁发生; 死锁检测与解除允许系统发生死锁,通过系统设置的检测机构精确确定与死锁有关的资源和进程,采取措施清除发生的死锁; 文件系统。 负责存取和管理文件的机构,又称为文件管理系统。 第五章数据库 数据库系统数据库系统(DatabaseSystem)指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户组成。 数据管理经历了人工管理、文件系统和数据库系统三个发展阶段 数据模型是现实世界特征的模拟和抽象 数据模型 数据模型是按计算机系统的观点对数据建模,主要用于数据库管理系统DBMS的实现 数据模型是数据库系统的核心和基础,主要的数据模型有层次模型、网状模型、关系模型和面向对象模型 数据模型通常由数据结构,数据操作和完整性约束三部分组成 数据库系统一般由数据库、数据库管理系统、应用系统、数据库管理员和用户组成。 数据库管理系统 数据库管理系统(DBMS,DataBaseManagementSystem)是对数据进行管理的大型系统软件,它是数据库系统的核心组成部分。 用户在数据库系统中的一切操作,包括数据定义、查询、更新及各种控制,都是通过DBMS进行的。 DBMS就是实现把用户意义下的抽象的逻辑数据处理转换成计算机中的具体的物理数据的处理软件,这给用户带来很大的方便。 数据库管理系统主要功能 ‰数据定义DBMS提供数据定义语言DDL(DataDefineLanguage),用户可以定义数据的模式、外模式和内模式三级模式结构,定义模式/内模式和外模式/模式二级映象,定义有关的约束条件。 数据库管理系统DBMS(续) ‰数据操纵DBMS提供数据操纵语言DML(DataManipulationLanguage)实现对数据库的基本操作,包括检索、插入、修改、删除等。 ‰数据库运行管理数据库在建立、运行和维护时由DBMS统一管理、同一控制、以确保数据的安全性、完整性、多用户对数据的并发使用及发生故展后的系统恢复。 ‰数据库的建立和维护功能包括数据库初始数据的装入,数据库转储、恢复、重组织,系统性能监视、分析等功能。 ‰数据通信DBMS提供与其他软件系统进行通信的功能。 实现用户程序与关系模型种可以有三类完整性约束: 实体完整性、参照完整性、用户定义完整性,其中前两种是关系模型必须满足的约束条件。 例5.1建立一个学生表Student,它由学号Sno、姓名Sname、性别Sex、年龄Age、所在系Dept五个属性构成。 其中学号不能为空,值是唯一的,并且姓名取值也唯一。 CREATETABLEStudent (SnoCHAR(5)NOTNULLUNIQUE, SnameCHAR(20)UNIQUE, SexCHAR (1), AgeINT, DeptCHAR(15),PRIMARYKEYSno); 例5.2向Student表增加“入学时间”列,其数据类型为日期型。 ALTERTABLEStudentADDSenrolldateDATE;‰不论基本表中原来是否已有数据,新增加的列一律为空值。 例5.3将年龄的数据类型改为半字长整数。 ALTERTABLEStudentMODIFYAgeSMALLINT;修改原有的列定义有可能会破坏已有数据。 例5.4删除学生姓名必须取唯一值的约束。 ALTERTABLEStudentDROPUNIQUE(Sname); 删除Student表。 DROPTABLEStudent; 例5.6为学生课程数据库中的Student,Course,SC三个表建立索引。 其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATEUNIQUEINDEXIdx_SnoONStudent(Sno); CREATEUNIQUEINDEXIdx_CnoONCourse(Cno); CREATEUNIQUEINDEXIdx_SCONSC(SnoASC,Cno DESC); 例5.7在Student表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放。 CREATECLUSTERINDEXIdx_SnameONStudent(Sname); 例5.9查询全体学生的学号与姓名。 SELECTSno,Sname FROMStudent; 例5.10查询全体学生的姓名、学号、所在系。 SELECTSname,Sno,Dept FROMStudent; 例5.11查询全体学生的详细记录。 SELECTSno,Sname,Sex,Age,Dept FROMStudent;或 SELECT*//表示将表中的列全部按序输出 FROMStudent; 例5.23查询所有姓张学生的姓名、学号和性别。 SELECTSname,Sno,Sex FROMStudent WHERESnameLIKE'张%'; 例5.24查询姓“巩”且全名为两个汉字的学生的姓名 SELECTSname FROMStudent WHERESnameLIKE'巩_'; 例5.25查询名字中第2个字为“亚”字的学生的姓名 SELECTSname,Sno FROMStudent WHERESnameLIKE'_亚%'; 查询以“Data_”开头,且倒数第3个字符为u的课程的详细情况
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京 化工大学 软件技术 基础 考试 复习 重点 剖析
![提示](https://static.bdocx.com/images/bang_tan.gif)