- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构业题
第一章
1、设n为正整数,利用大O记号,将下列程序段的执行时间表示为n的函数。
(1) i=1; k=0;?
while(in)
{ k=k+10*i;i++;
}?
(2) i=0; k=0;
do{
k=k+10*i; i++;?
}
while(in);?
(3) i=1; j=0;?
while(i+j=n)?
{
if (ij) j++;
else i++;
}
(4)x=n; // n1?
while (x=(y+1)*(y+1))
y++;
(5) x=91; y=100;?
??? while(y0)
if(x100)
{x=x-10;y--;}
else x++;
按增长率由小至大的顺序排列下列各函数:
2100, (3/2)n,(2/3)n, nn ,n0.5 , n! ,2n ,lgn ,nlgn, n(3/2) 2-7 针对带表头结点的单链表,试编写下列函数。
(1) 定位函数Locate:在单链表中寻找第i个结点。若找到,则函数返回第i个结点的地址;若找不到,则函数返回NULL。
(2) 求最大值函数max:通过一趟遍历在单链表中确定值最大的结点。
第三章
3-1.将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空,当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长。当向第0号栈插入一个新元素时,使top[0]增1得到新的栈顶位置,当向第1号栈插入一个新元素时,使top[1]减1得到新的栈顶位置。当top[0]+1 == top[1]时或top[0] == top[1]-1时,栈空间满,此时不能再向任一栈加入新的元素。试定义这种双栈(Double Stack)结构的类型定义,并实现初始化、判栈空、判栈满、插入、删除算法。
【提示】
类型定义:
#define m 100;
Typedef int dsType;//双栈的元素类型
Typedef struct{
int top[2]; //双栈的栈顶指针和栈底指针
dsType V[m];//栈数组
} DoubleStack;
初始化空双栈算法:
InitdStack(DoubleStack ds ) {
//初始化空双栈ds
ds.top[0]=-1;
ds.top[1]=m;
}
判栈空算法:
int DStackEmpty(DoubleStack ds , int i) {
//判断双栈ds的第i(0或1)个栈是否为空,空则返回1,否则返回0
if (i==0 ds.top[0]==-1) return 1;
if (i==1 ds.top[1]==m) return 1;
return 0;
}
3-2. 试利用算符优先法,画出对如下中缀算术表达式求值时运算符栈和操作数栈的变化。
a + b * (c - d) – e# (#表示结束符)
步序 扫描项 项类型 动作 OPND栈变化 OPTR栈变化 0 ( OPTR栈与OPND栈初始化, ‘#’ 进OPTR栈,
取第一个符号 # 1 a 操作数 ( a 进OPND栈, 取下一符号 a # 2 + 操作符 ( ‘ + ’ ‘#’, 进OPTR栈, 取下一符号 a #+ …… …… …… …… …… ……
3-3 分别写出顺序循环队列队列Q状态为“空”还是“满”的条件和计算队列中元素个数的公式。
第四章
设有模式串T1,T2,T1=‘aaab’,T2=‘abcabaa’,
目标串s为‘abc aaabbabcabaacbacba’,
(1)计算模式串T1的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
(2)计算模式串T2的next(j) 和nextval(j)函数的值,并(按照nextval(j) )画出KMP算法匹配过程。
学号尾数为奇数做第(1)题;偶数做第(2)题
第五章
5-1 设有一个二维数组A[m][n](按照列优先存储,m、n均大于5),假设A[0][0]存放位置在644(10),A[2][3]存放位置在676(10),每个元素占一个空间,问A[4][4](10)存放在什么位置?脚注(10)表示用10进制表示。
5-2假二维数组A9(3(5(8,第一个元素的字节地址是1000,每个元素占6个字节。问下列元素的存储地址是什么?
(1)a0000 (2)a8247
(3)按行优先存储(最左下标优先)时a3125的地址 (4)按照列优先存储(最右下标优先)时a
文档评论(0)