中国铁道出版社数据结构第二版单元4练习参考答案.doc_第1页
中国铁道出版社数据结构第二版单元4练习参考答案.doc_第2页
中国铁道出版社数据结构第二版单元4练习参考答案.doc_第3页
中国铁道出版社数据结构第二版单元4练习参考答案.doc_第4页
中国铁道出版社数据结构第二版单元4练习参考答案.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元测验4一判断题(下列各题,正确的请在前面的括号内打;错误的打 )()(1)队列是限制在两端进行操作的线性表。()(2)判断顺序队列为空的标准是头指针和尾指针都指向同一个结点。()(3)在链队列上做出队操作时,会改变front指针的值。()(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear- front。()(5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。()(6)链队列在一定范围内不会出现队满的情况。()(7)在循环链队列中无溢出现象。()(8)栈和队列都是顺序存储的线性结构。()(9)在队列中允许删除的一端称为队尾。()(10)顺序队和循环队关于队满和队空的判断条件是一样的。二填空题(1) 在队列中存取数据应遵循的原则是 先进先出 。(2) 队列 是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。(3) 在队列中,允许插入的一端称为 队尾 。(4) 在队列中,允许删除的一端称为 队首(或队头) 。(5) 队列在进行出队操作时,首先要判断队列是否为 空 。(6) 顺序队列在进行入队操作时,首先要判断队列是否为 满 。(7) 顺序队列初始化后,front=rear= -1 。(8) 解决顺序队列“假溢出”的方法是采用 循环队列 。(9) 循环队列的队首指针为front,队尾指针为rear,则队空的条件为 front = rear 。(10) 链队列LQ为空时,LQ-front-next= NULL 。(11) 设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为 O(n)。(12) 设长度为n的链队列用单循环链表表示,若只设尾指针,则出队操作的时间复杂度为 0(1) 。(13) 在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为 空 。(14) 设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列的最大空间为MAXLEN,则队满标志为: front=(rear+1)%MAXLEN 。(15) 在一个链队列中,若队首指针为front,队尾指针为rear,则判断该队列只有一个结点的条件为: front=rear & front !NULL 。( 或 front=rear & front NULL )(16) 向一个循环队列中插入元素时,首先要判断 队尾指针 ,然后再向指针所指的位置写入新的数据。(17) 读队首元素的操作 不改变(或不影响) 队列元素的个数。 (18) 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有 front=11,rear=19,则循环队列中还有 8 个元素。 (L= (Nrearfront)% N=(401911)% 40=8)(19)队列Q,经过下列运算:InitQueue(Q)(初始化队列);InQueue(Q,a); InQueue(Q,b);OutQueue(Q,x); ReadFront(Q,x);QEmpty(Q);后的值是 0 。(20)队列Q经过InitQueue(Q)(初始化队列);InQueue(Q,a);InQueue(Q,b); ReadFront(Q,x)后,x的值是 a 。三选择题(1)队列是限定在( D )进行操作的线性表。 A中间 B队首 C队尾 D端点(2)队列中的元素个数是( B )。 A不变的 B可变的 C任意的 D0(3)同一队列内各元素的类型( A )。 A必须一致 B不能一致 C可以不一致 D不限制(4)队列是一个( C )线性表结构。 A不加限制的 B推广了的 C加了限制的 D非(5)当利用大小为n的数组顺序存储一个队列时,该队列的最后一个元素的下标为( B )。 An-2 Bn-1 Cn Dn+1(6)一个循环队列一旦说明,其占用空间的大小( A )。 A已固定 B可以变动 C不能固定 D动态变化(7)循环队列占用的空间( A )。 A必须连续 B不必连续 C不能连续 D可以不连续(8)存放循环队列元素的数组data有10个元素,则data数组的下标范围是( B )。 A0.10 B0.9 C1.9 D1.10(9)若进队的序列为:A,B,C,D,则出队的序列是( C )。 AB,C,D,A BA,C,B,D CA,B,C,D DC,B,D,A(10)四个元素按:A,B,C,D顺序连续进队Q,则队尾元素是( D )。 A AB B C CD D(11)四个元素按:A,B,C,D顺序连续进队Q,执行一次OutQueue(Q)操作后,队头元素是( B )。 A AB B C C D D(12)四个元素按:A,B,C,D顺序连续进队Q,执行四次OutQueue(Q)操作后,再执行QEmpty(Q);后的值是( B )。 A 0B 1 C 2 D 3(13)队列Q,经过下列运算后,x 的值是( B )。 InitQueue(Q)(初始化队列);InQueue(Q,a); InQueue(Q,b);OutQueue(Q,x); ReadFront (Q,x);Aa Bb C0 D1(14)循环队列SQ队满的条件是( B )。 ASQ-rear=SQ-front B(SQ-rear+1)% MAXLEN =SQ-frontCSQ-rear=0 DSQ-front=0(15)设链栈中结点的结构:data为数据域,next为指针域,且top是栈顶指针。若想在链栈的栈顶插入一个由指针s所指的结点,则应执行下列( A )操作。 As-next=top-next;top-next=s; Btop-next=s; Cs-next=top;top=top-next; Ds-next=top;top=s;(16)带头结点的链队列LQ示意图如下,链队列的队头元素是( A )LQ-frontHABCD LQ-rearAA BB CC DD(17)带头结点的链队列LQ示意图如下,指向链队列的队头指针是( C )LQ-frontHABCD LQ-rearALQ-front BLQ-rear CLQ-front-next DLQ-rear-next(18)带头结点的链队列LQ示意图如下,在进行进队运算时指针LQ-front( A ) LQ-frontHABCD LQ-rearA始终不改变 B有时改变 C进队时改变 D出队时改变(19)队列Q,经过下列运算后,再执行QEmpty(Q) 的值是( C )。 InitQueue(Q) (初始化队列);InQueue(Q,a); InQueue(Q,b);OutQueue(Q,x); ReadQueue(Q,x);Aa Bb C0 D1(20)若用一个大小为6的数组来实现循环队列,且当前front和rear的值分别为3和0,当从队列中删除一个元素,再加入两个元素后,front和rear的值分别为( B )。 A5和1 B4和2 C2和4 D1和5四 写出程序运行的结果写出下列程序段的输出结果(队列中的元素类型为char)。void main( ) Queue Q; InitQueue (Q); / 初始化队列char x=E; y=C;InQueue (Q, H);InQueue (Q, R);InQueue (Q, y);OutQueue (Q,x); InQueue (Q,x); OutQueue (Q,x); InQueue (Q, A); while (!QEmpty(Q)OutQueue (Q,y);printf(y); ;printf(x);答:输出为“CHAR”。五程序填空1假定用一个循环单链表表示一个循环队列,该队列只设一个队尾指针rear,试填空完成向循环队列中插入一个元素为x的结点的函数。typedef struct queuenode / 定义队列的存储结构int data;struct queuenode *next;qu;InQueue(rear,x) / 向队列插入元素为x的函数 qu *rear;int x; qu *head,*s; s= new qu ; s-data= x ; if (rear=NULL) / 循环队列为空,则建立一个结点的循环队列 rear=s; rear-next; else head= rear-next ; / 循环队列非空,则将s插到后面rear-next= s ;rear=s;rear-next =head;六. 算法设计题1设一个循环队列Queue,只有头指针front,不设尾指针,另设一个含有元素个数的记数器cont,试写出相应的入队算法和出队算法。2用一个循环数组Q0.MAXLEN-1表示队列时,该队列只有一个头指针front,不设尾指针,而改置一个记数器count用以记录队列中结点的个数。试编写一个能实现:初始化队列、判队空、读队头元素、入队操作和出队操作的算法。3一个用单链表组成的循环队列,只设一个尾指针rear,不设头指针,请编写他如下算法:(1) 向循环队列中插入一个元素为x的结点;(2) 从循环队列中删除一个结点。1 解:用一个循环数组Queue0,n-1表示该循环队列,头指针为front,计数器count用来记录队列中结点的个数。(1)入队算法: void inqueqe(int x) int temp;if (count=n) printf( 队列上溢出n);else count+ temp=(front+count)%n; Queuetemp=x (2)出队算法: int outqueue() int temp;if (count=0) printf( 队列下溢出n);else temp=Queuefront; front=(front+1)%n; count-; return temp; 2解:队列为空:count=0队列为满:count=MAXLEN队尾第一个元素位置=(front+count)%MAXLEN队首第一个元素位置=(front+1)%MAXLENconst MAXLEN=100;int queueMAXLEN;int front,count; / 定义队头和计数器count(1)初始化队列void init() front=1; count=0;(2)判定队空int QEmpty() if (count=0)return(1); else return(0); (3)读队头元素void ReadFront(int queue,x) if (count=0) printf( 下溢出n); else front=(front+1)%MAXLEN;x=queuefront; (4)入队操作 void InQueue(int queue,int x) int place; if (count=MAXLEN)printf( 上溢出n); else count+;place=(front+count)%MAXLEN;queueMAXLEN=x; (5)出队操作 void OutQueue(int queue) / 删除队列头元素 if (count=0) printf( 队列下溢出n); else front=(front+1)%MAXLEN;count-; 3(1)解:定义本题队列的结点类型如下:typedef struct linknode int data; struct linknode *next; qu; qu *rear;inqueue(int x) / 向队列插入结点x qu *head, *s; s=(qu *) new qu; / 创建一个新结点 s-data=x; if (rear=NUlL) / 若队空,则建立一个循环队列 rears; rear-nexts; else / 若不为空,则将s插到后面 head=rear-next; rear-nexts; rear=s; / rear始终指向最后一个结点 rear-nexthead; (2)解:void delqueue(rear) if (rear=NULL) printf( 下溢出!n); else head=rear-next; / head指向队首结点 if (head=rear) rear=NULL / 只有个结点则直接删除该结点 else rear-next=head-next / 否则删除第一个结点 delete head; / 释放队首结点 下午13:0017:00B实行不定时工作制的员工,在保证完成甲方工作任务情况下,经公司同意,可自行安排工作和休息时间。312打卡制度3.1.2.1公司实行上、下班指纹录入打卡制度。全体员工都必须自觉遵守工作时间,实行不定时工作制的员工不必打卡。3.1.2.2打卡次数:一日两次,即早上上班打卡一次,下午下班打卡一次。3.1.2.3打卡时间:打卡时间为上班到岗时间和下班离岗时间; 3.1.2.4因公外出不能打卡:因公外出不能打卡应填写外勤登记表,注明外出日期、事由、外勤起止时间。因公外出需事先申请,如因特殊情况不能事先申请,应在事毕到岗当日完成申请、审批手续,否则按旷工处理。因停电、卡钟(工卡)故障未打卡的员工,上班前、下班后要及时到部门考勤员处填写未打卡补签申请表,由直接主管签字证明当日的出勤状况,报部门经理、人力资源部批准后,月底由部门考勤员据此上报考勤。上述情况考勤由各部门或分公司和项目文员协助人力资源部进行管理。3.1.2.5手工考勤制度3.1.2.6手工考勤制申请:由于工作性质,员工无法正常打卡(如外围人员、出差),可由各部门提出人员名单,经主管副总批准后,报人力资源部审批备案。3.1.2.7参与手工考勤的员工,需由其主管部门的部门考勤员(文员)或部门指定人员进行考勤管理,并于每月26日前向人力资源部递交考勤报表。3.1.2.8参与手工考勤的员工如有请假情况发生,应遵守相关请、休假制度,如实填报相关表单。3.1.2.9 外派员工在外派工作期间的考勤,需在外派公司打卡记录;如遇中途出差,持出差证明,出差期间的考勤在出差地所在公司打卡记录;3.2加班管理3.2.1定义加班是指员工在节假日或公司规定的休息日仍照常工作的情况。A现场管理人员和劳务人员的加班应严格控制,各部门应按月工时标准,合理安排工作班次。部门经理要严格审批员工排班表,保证员工有效工时达到要求。凡是达到月工时标准的,应扣减员工本人的存休或工资;对超出月工时标准的,应说明理由,报主管副总和人力资源部审批。 B因员工月薪工资中的补贴已包括延时工作补贴,所以延时工作在4小时(不含)以下的,不再另计加班工资。因工作需要,一般员工延时工作4小时至8小时可申报加班半天,超过8小时可申报加班1天。对主管(含)以上管理人员,一般情况下延时工作不计加班,因特殊情况经总经理以上领导批准的延时工作,可按以上标准计加班。3.2.2.2员工加班应提前申请,事先填写加班申请表,因无法确定加班工时的,应在本次加班完成后3个工作日内补填加班申请表。加班申请表经部门经理同意,主管副总经理审核报总经理批准后有效。加班申请表必须事前当月内上报有效,如遇特殊情况,也必须在一周内上报至总经理批准。如未履行上述程序,视为乙方自愿加班。3.2.2.3员工加班,也应按规定打卡,没有打卡记录的加班,公司不予承认;有打卡记录但无公司总经理批准的加班,公司不予承认加班。3.2.2.4原则上,参加公司组织的各种培训、集体活动不计加班。3.2.2.5加班工资的补偿:员工在排班休息日的加班,可以以倒休形式安排补休。原则上,员工加班以倒休形式补休的,公司将根据工作需要统一安排在春节前后补休。加班可按1:1的比例冲抵病、事假。3.2.3加班的申请、审批、确认流程3.2.3.1加班申请表在各部门文员处领取,加班统计周期为上月26日至本月25日。3.2.3.2员工加班也要按规定打卡,没有打卡记录的加班,公司不予承认。各部门的考勤员(文员)负责加班申请表的保管及加班申报。员工加班应提前申请,事先填写加班申请表加班前到部门考勤员(文员)处领取加班申请表,加班申请表经项目管理中心或部门经理同意,主管副总审核,总经理签字批准后有效。填写并履行完审批手续后交由部门考勤员(文员)保管。3.2.3.3部门考勤员(文员)负责检查、复核确认考勤记录的真实有效性并在每月27日汇总交人力资源部,逾期未交的加班记录公司不予承认。下午13:0017:00B实行不定时工作制的员工,在保证完成甲方工作任务情况下,经公司同意,可自行安排工作和休息时间。312打卡制度3.1.2.1公司实行上、下班指纹录入打卡制度。全体员工都必须自觉遵守工作时间,实行不定时工作制的员工不必打卡。3.1.2.2打卡次数:一日两次,即早上上班打卡一次,下午下班打卡一次。3.1.2.3打卡时间:打卡时间为上班到岗时间和下班离岗时间; 3.1.2.4因公外出不能打卡:因公外出不能打卡应填写外勤登记表,注明外出日期、事由、外勤起止时间。因公外出需事先申请,如因特殊情况不能事先申请,应在事毕到岗当日完成申请、审批手续,否则按旷工处理。因停电、卡钟(工卡)故障未打卡的员工,上班前、下班后要及时到部门考勤员处填写未打卡补签申请表,由直接主管签字证明当日的出勤状况,报部门经理、人力资源部批准后,月底由部门考勤员据此上报考勤。上述情况考勤由各部门或分公司和项目文员协助人力资源部进行管理。3.1.2.5手工考勤制度3.1.2.6手工考勤制申请:由于工作性质,员工无法正常打卡(如外围人员、出差),可由各部门提出人员名单,经主管副总批准后,报人力资源部审批备案。3.1.2.7参与手工考勤的员工,需由其主管部门的部门考勤员(文员)或部门指定人员进行考勤管理,并于每月26日前向人力资源部递交考勤报表。3.1.2.8参与手工考勤的员工如有请假情况发生,应遵守相关请、休假制度,如实填报相关表单。3.1.2.9 外派员工在外派工作期间的考勤,需在外派公司打卡记录;如遇中途出差,持出差证明,出差期间的考勤在出差地所在公司打卡记录;3.2加班管理3.2.1定义加班是指员工在节假日或公司规定的休息日仍照常工作的情况。A现场管理人员和劳务人员的加班应严格控制,各部门应按月工时标准,合理安排工作班次。部门经理要严格审批员工排班表,保证员工有效工时达到要求。凡是达到月工时标准的,应扣减员工本人的存休或工资;对超出月工时标准的,应说明理由,报主管副总和人力资源部审批。 B因员工月薪工资中的补贴已包括延时工作补贴,所以延时工作在4小时(不含)以下的,不再另计加班工资。因工作需要,一般员工延时工作4小时至8小时可申报加班半天,超过8小时可申报加班1天。对主管(含)以上管理人员,一般情况下延时工作不计加班,因特殊情况经总经理以上领导批准的延时工作,可按以上标准计加班。3.2.2.2员工加班应提前申请,事先填写加班申请表,因无法确定加班工时的,应在本次加班完成后3个工作日内补填加班申请表。加班申请表经部门经理同意,主管副总经理审核报总经理批准后有效。加班申请表必须事前当月内上报有效,如遇特殊情况,也必须在一周内上报至总经理批准。如未履行上述程序,视为乙方自愿加班。3.2.2.3员工加班,也应按规定打卡,没有打卡记录的加班,公司不予承认;有打卡记录但无公司总经理批准的加班,公司不予承认加班。3.2.2.4原则上,参加公司组织的各种培训、集体活动不计加班。3.2.2.5加班工资的补偿:员工在排班休息日的加班,可以以倒休形式安排补休。原则上,员工加班以倒休形式补休的,公司将根据工作需要统一安排在春节前后补休。加班可按1:1的比例冲抵病、事假。3.2.3加班的申请、审批、确认流程3.2.3.1加班申请表在各部门文员处领取,加班统计周期为上月26日至本月25日。3.2.3.2员工加班也要按规定打卡,没有打卡记录的加班,公司不予承认。各部门的考勤员(文员)负责加班申请表的保管及加班申报。员工加班应提前申请,事先填写加班申请表加班前到部门考勤员(文员)处领取加班申请表,加班申请表经项目管理中心或部门经理同意,主管副总审核,总经理签字批准后有效。填写并履行完审批手续后交由部门考勤员(文员)保管。3.2.3.3部门考

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论