16章作业Word格式.docx
- 文档编号:21098416
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:11
- 大小:83.27KB
16章作业Word格式.docx
《16章作业Word格式.docx》由会员分享,可在线阅读,更多相关《16章作业Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
2、求下面程序段的时间复杂度
①for(i=0;
i<
n;
i++)②i=s=0;
③s=0;
for(j=0;
j<
m;
j++)while(s<
n)for(i=0;
i++)
a[i][j]=0;
{i++;
j++)
s+=i;
}s+=b[i][j];
④x=n;
y=0;
while((x>
=(y+1)*(y+1))
y=y+1;
【上机作业】
1.熟悉VC++编程环境
2.TRIPLET算法实现(看懂程序)
3.已知输入x,y,z三个不相等的整数,实现三个数从小到大顺序的输出,其中x中存放最小数,y中存放次小数。
要求使用引用参数来实现。
4.测试算法的运行时间
在此,我们通过一个比较两个算法执行效率的程序例子,掌握测试算法运行时间的基本方法。
这里涉及到C语言中标准的函数库sys/timeb。
sys/timeb函数库中提供了处理与时间相关的函数。
其中函数ftime的功能是获取当前的系统时间。
输入两个C语言主程序test3_2.cpp和test3_3.cpp,并运行。
主文件(test3_2.cpp):
#include<
stdio.h>
sys/timeb.h>
//时间函数
voidmain()
{
1timebt1,t2;
2longt;
3doublex,sum=1,sum1;
4inti,j,n;
5printf("
请输入x,n:
"
);
6scanf("
%lf,%d"
&
x,&
n);
7ftime(&
t1);
//求得当前时间
8for(i=1;
i<
=n;
i++)
9{
10sum1=1;
11for(j=1;
j<
=i;
12sum1=sum1*(-1.0/x);
13sum+=sum1;
14}
15ftime(&
t2);
16t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
//计算时间差,转换成毫秒
17printf("
sum=%lf用时%ld毫秒\n"
sum,t);
}
主文件(test3_3.cpp):
#include<
#include<
voidmain()
{
timebt1,t2;
longt;
doublex,sum1=1,sum=1;
inti,n;
printf("
请输入x,n:
"
scanf("
ftime(&
//求得当前时间
for(i=1;
sum1*=-1.0/x;
sum+=sum1;
t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
//计算时间差,转换成毫秒
考虑如下问题:
(1)这两个算法的功能是什么?
(2)它们的时间复杂度分别是多少?
哪个算法更优?
第2章线性表
1.在什么情况下用顺序表比链表好?
2.已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列
a.在P结点后插入S结点的语句序列是。
b.在P结点前插入S结点的语句序列是。
c.在表首插入S结点的语句序列是。
d.在表尾插入S结点的语句序列是。
(1)P->
next=S;
(2)P->
next=P->
next->
next;
(3)P->
next=S->
(4)S->
(5)S->
next=L;
(6)S->
next=NULL;
(7)Q=P;
(8)while(P->
next!
=Q)P=P->
(9)while(P->
=NULL)P=P->
(10)P=Q;
(11)P=L;
(12)L=S;
(13)L=P;
3.已知L是带头结点的非空单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。
a.删除P结点的直接后继结点的语句序列是。
b.删除P结点的直接前驱结点的语句序列是。
c.删除P结点的语句序列是。
d.删除首元结点的语句序列是。
e.删除尾元结点的语句序列是。
(1)P=P->
next=P;
(4)P=P=>
(5)while(P!
(6)while(Q->
=NULL){P=Q;
Q=Q->
(7)while(P->
(8)while(P->
(9)while(P->
(10)Q=P;
(11)Q=P->
(12)P=L;
(13)L=L->
(14)free(Q);
4.简述以下算法的功能
(1)StatusA(LinkedListL){//L是无表头结点的单链表
if(L&
&
L->
next){
Q=L;
L=L->
P=L;
While(P->
next)P=P->
P->
next=Q;
Q->
returnOK;
}//A
(2)voidBB(LNode*s,LNode*q){
p=s;
while(p->
=q)p=p->
p->
next=s;
}//BB
voidAA(LNode*pa,LNode*pb){
//pa和pb分别指向单循环链表中的两个结点
BB(pa,pb);
BB(pb,pa);
}//AA
5.已知有一个单向循环链表,其每个结点中含三个域:
pre,data和next,其中data为数据域,next为指向后继结点的指针域,pre也为指针域,但它的值为空(NULL),试编写算法将此单向循环链表改为双向循环链表,即使pre成为指向前驱结点的指针域。
(1)设顺序表va中的数据元素递增有序。
试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。
(2)已知线性表中的元素以值递增有序排列,并以单链表作存储结构。
试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)同时释放被删结点空间,并分析你的算法的时间复杂度(注意:
mink和maxk是给定的两个参变量,它们的值可以和表中的元素相同,也可以不同)。
(3)假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
第3章栈和队列
1.简述以下算法的功能(栈的元素类型SElemType为int)。
(1)statusalgo1(StackS){
inti,n,A[255];
n=0;
while(!
StackEmpty(S)){n++;
Pop(S,A[n]);
};
for(i=1;
i++)Push(S,A[i]);
(2)statusalgo2(StackS,inte){
StackT;
intd;
InitStack(T);
StackEmpty(S)){
Pop(S,d);
if(d!
=e)Push(T,d);
StackEmpty(T)){
Pop(T,d);
Push(S,d);
2.写出以下程序段的输出结果(队列中元素类型QElemType为char)。
voidmain(){
QueueQ;
InitQueue(Q);
Charx=’e’,y=’c’;
EnQueue(Q,’h’);
EnQueue(Q,’r’);
EnQueue(Q,y);
DeQueue(Q,x);
EnQueue(Q,x);
EnQueue(Q,’a’);
QueueEmpty(Q)){
DeQueue(Q,y);
printf(y);
printf(x);
3.有6个元素a,b,c,d,e,f依次进栈,允许任何时候出栈,能否得到下列出栈序列?
(1)cdbefa
(2)abedfc(3)dceabf(4)baefcd(5)abcdef
4.用一维数组a[7]顺序存储一个循环队列,队首和队尾指针分别用front和rear表示,当前队列中已有5个元素:
23,45,67,80,34,其中,23为队首元素,front的值为3,请画出对应的存储状态,当连续做4次出队运算后,再让15,36,48元素依次进队,请再次画出对应的存储状态。
1.试写一个将某十进制数转化为其他任意进制数的算法。
2.试写一个判别表达式中开、闭括号是否配对出现的算法。
3.教材P64上循环队列算法实现。
第4章串
1.编写算法,实现串的基本操作Replace(&
S,T,V)。
要求采用定长顺序存储表示,并且不允许调用串的基本操作。
2.编写算法,在串的堆存储机构上实现串的插入操作StrInsert(&
S,pos,T)和串的删除操作StrDelete(&
S,pos,len)。
第6章树和二叉树
1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。
3.请对下图所示的二叉树进行后序线索化,为每个空指针建立相应的前驱或后继线索。
4.分别画出和下列树对应的各个二叉树:
5.画出和下列二叉树对应的森林:
(a)
(b)
(c)
(d)
6.假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
试为这8个字母设计哈夫曼编码(按右子树根结点的权小于等于左子树根结点的权构造Huffman树)。
7.假设一棵二叉树的先序序列为EBADCFHGIKJ和中序序列为ABCDEFGHIJK。
请画出该树。
(1)建立一棵二叉树,实现层序遍历
(2)赫夫曼编码与译码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 16 作业