- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
答案《数据结构》试卷.doc
任选5题((1,2),(3,4),(5,6),(7,8)中必须至少做一题),每题20分。
一、试设计一个双栈结构,它有两个端点end1和end2,满足从end1端插入的表目只能从end1端被删除,从end2端插入的表目只能从end2端被删除,并给出指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述。再设计一个算法,它能够将一个有限长度的数据序列a1,a2,…,an,按照下标奇偶序号交替的方式将ai (1≤i≤n)分别从两端入栈,然后将数据出栈以实现整个数据序列的倒排。
该双栈宜采用顺序存储、栈顶迎面增长的存储方式,其形式定义如下:
#define STACK_SIZE 1000
typedef struct {
SElemType base[STACK_SIZE];
SElemType *top[3]; //top[1]表示end1端的栈顶指针,top[2]表示end2端的栈顶指针
//初始值分别为base和base+STACK_SIZE-1
}DSqStack;
指定端i(i=1,2)的进栈push(S,e,i)和出栈pop(S,e,i)操作的算法描述如下:
Status push(DSqStack S, SElemType e, int i) {
if ( S.top[1]-S.top[2]==1 ) //栈满
exit(OVERFLOW);
else if (i==1)
*S.top[1]++ = e;
else if (i==2)
*S.top[2]-- = e;
else
return ERROR;
return OK;
}
Status pop(DSqStack S, SElemType e, int i) {
if (i==1) {
if ( S.top[1] == S.base ) return ERROR;
e = *--S.top[1] = e;
return OK;
}
else if (i==2) {
if (S.top[2] == S.base+STACK_SIZE-1) return ERROR;
e = *++S.top[2];
return OK;
} else
return ERROR;
}
基于上述结构的数据序列的倒排算法描述如下:
Status resevers(DSqStack S, SElemType a[], int n) {
for (j=1;j=n;j++)
if (j%2==0) push(S, a[j-1],2);
else push(S, a[j-1],1);
for (j--;j=1;j--)
if (j%2==0) pop(S, a[n-j],2);
else pop(S, a[n-j],1);
return OK;
}
二、利用两个栈S1、S2模拟一个队列(如客户队列)时,如何用栈的运算实现队列的插入、删除运算。使用算法描述。
解:利用两个栈S1、S2模拟一个队列(如客户队列)时,当需要向队列中输入元素时,用S1来存放输入元素,用push运算实现。当需要从队列中输出元素时,到栈S2中去取,如果S2为空,则将S1中的元素全部送入到S2中,然后再从S2中输出元素。判断队空的条件是:S1和S2同时为空。
Status EnQueue(DataType x)
{
if StackFull(S1){ //S1栈满
if StackEmpty(S2){ // S1栈满,S2栈空
while (!StackEmpty(S1)){ Pop(S1, y); Push(S2, y); //栈S1的内容反向搬到栈S2
Push(S1, x); return OK;
}
else //S1栈满,S2栈非空,则不可进行插入操作
return ERROR;
}
else{ //S1栈不满,则直接进栈
Push(S1, x);
return OK;
}
}
Status DeQueue(DataType x)
{
if !StackEmpty(S2) {
Pop(S2, x);return OK;
}
else{
if !StackEmpty(S1){
while (!StackEmpty(S1)){ Pop(S1, y); Push(S2, y);} //栈S1的内容反向搬到栈S2
Pop(S2, x); return OK;
}
else //栈S1和S2都为空
return ERROR;
}
}
三、模式匹配算法是在主串中快速寻找模式的一种有效的方法。如果
您可能关注的文档
- 第四章 工业 单元测试B.doc
- 第四章 数字压缩编码技术.doc
- 第四章 模拟电路基本单元和基本模块设计.doc
- 第四章 现象学(教案).doc
- 第四章 硬件描述语言.pdf
- 第四章 硬件描述语言VHDL基础.doc
- 第四章 程序设计语言基础.doc
- 第四章 网络互连与Internet技术.doc
- 第四章+MATLAB的数值计算功能.doc
- 第四章,移动通信基站无线勘察与设计.doc
- 2025中国冶金地质总局所属在京单位高校毕业生招聘23人笔试参考题库附带答案详解.doc
- 2025年01月中国人民大学文学院公开招聘1人笔试历年典型考题(历年真题考点)解题思路附带答案详解.doc
- 2024黑龙江省农业投资集团有限公司权属企业市场化选聘10人笔试参考题库附带答案详解.pdf
- 2025汇明光电秋招提前批开启笔试参考题库附带答案详解.pdf
- 2024中国能建葛洲坝集团审计部公开招聘1人笔试参考题库附带答案详解.pdf
- 2024吉林省水工局集团竞聘上岗7人笔试参考题库附带答案详解.pdf
- 2024首发(河北)物流有限公司公开招聘工作人员笔试参考题库附带答案详解.pdf
- 2023国家电投海南公司所属单位社会招聘笔试参考题库附带答案详解.pdf
- 2024湖南怀化会同县供水有限责任公司招聘9人笔试参考题库附带答案详解.pdf
- 2025上海烟草机械有限责任公司招聘22人笔试参考题库附带答案详解.pdf
文档评论(0)