- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
习题课2
栈
1.设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序加入其中,请回答下述问题:
(1)若入、出栈次序为push(1),pop(),push(2),push(3),pop(),pop(),push(4),pop(),出栈的数字序列为何(这里push(i)表示进栈pop()表示出栈)?
(2)能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。
(3)请分析1,2,3,4的24中排列中,哪些序列是可以通过相应的入出栈操作得到的。
【答案】
(1)1,3,2,4;
(2)不能得到1423序列,因为要得到4必须2,3入栈,才能4入栈,然后4出栈,而这时,只能得到3而不能得到2;能得到1432,依照以下入、出栈序列即可得到:
push(1),pop(),push(2),push(3),push(4),pop(),pop(),pop()
2.链栈中为何不设置头结点?
【答案】栈的操作位置就是栈顶一个位置,不设置头结点,插入、删除更方便。
3.循环队列的优点是什么?如何判别它为空和满?
【答案】
(1)循环队列结构解决了假溢出问题;
(2)采用少用一个存储单元的策略,让队头指针指向实际队头,队尾指针指向队尾元素的下一个位置。
队空的判定条件:Q-front==Q-rear
队满的判定条件:Q-front==(Q-rear+1)%Queuesize
4.设计长度为n的链队列用单循环链表表示,若只设头指针,则入队、出队的时间为何?若只设尾指针呢?
【答案】 若只设头指针,则出队的时间为O(1),入队时需要扫描整个链表,所用的时间为O(n);若只设尾指针,则入队、出队的时间均为O(1)。
5.指出下述程序段的功能是什么?
void demo(Seqstack *S) {
int i, arr[64],n=0;
while (!stackempty(S)) arr[n++]=pop(S);
for (i=0;in;i++) push(S,arr[i]);
}//demo1
【答案】程序段的功能是:利用工作数组arr[ ]将栈S中的元素序列逆置。
Seqstack S1,S2,temp;
Datatype x;
… //假设已作过初始化
while(!Stackempty(S1)) {x=pop(S1);push(temp,x);
while(!Stackempty(temp)) {x=pop(temp);push(S1,x);push(S2,x);}
【答案】程序段的功能是:利用工作栈temp将栈S1复制到栈S2。
(3) void demo2(Seqstack *S,int m) {
Seqstack T;
int i;
Initstack(T);
while (!stackempty(S))
if (i=pop(S))!=m) push(T,i) ;
while(!Stackempty(T)) {i=pop(T);push(S,i);}
}//demo2
【答案】程序段的功能是:利用工作栈t将栈S中的值为m的元素滤掉。
(4) void demo3(CirQueue *Q) {
int x; Seqstack S;
Initstack(S);
while (!QueueEmpty(Q)){x=Delqueue(Q); push(S,x) ;}
while(!Stackempty(S)) {x=pop(S);Enqueue(Q,x);}
}//demo3
【答案】见同步练习题。
CirQueue Q1,Q2;
int x,i,m=0;
……//假设Q1已有内容Q2已作过初始化
while (!QueueEmpty(Q1)){x=Delqueue(Q1); Enqueue(Q2,x);m++ ;}
for (i=0;im:i++) {x=Delqueue(Q2); Enqueue(Q1,x);Enqueue(Q2,x) ;}
【答案】程序段的功能是:把队列Q1的内容复制到队列Q2中。
算法设计题
6.回文是指正读和反读均相同的字符序列,例如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符向量是否为回文(提示:将一半字符入栈)。
【答案】算法如下:
int revers(char t[ ])
{Seqstack *S;
char ch;
int k,n;
Initstack(S)
n=strlen(t);
for(k=0
您可能关注的文档
- 数值计算实验.doc
- 数值分析课后题答案.doc
- 数值分析模拟试题(XAUT)(15套).doc
- 数值计算实习报告-牛顿插值算法(高分).doc
- 数值分析考试卷及详细答案解答.doc
- 数值计算方法I实验报告作业.doc
- 数字二进制编码器.doc
- 数字信号处理B实验指导书.doc
- 数值计算期末复习资料.doc
- 数字化测图综合实训.doc
- 浙江省温州市浙南名校联盟2025-2026学年高一上学期期中联考数学试题含解析.docx
- 26高考数学提分秘诀重难点34圆锥曲线中的定点、定值、定直线问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点35概率与统计的综合问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点31圆锥曲线中的切线与切点弦问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点30圆锥曲线中的弦长问题与长度和、差、商、积问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点29巧解圆锥曲线的离心率问题(举一反三专项训练)(全国通用)(含解析).docx
- 26高考数学提分秘诀重难点28直线与圆的综合(举一反三专项训练)(全国通用)(含解析).docx
- 寡核苷酸药物重复给药毒性研究技术指南.docx
- 重组溶瘤腺病毒生产质量管理标准.docx
- 26高考数学提分秘诀重难点27直线与圆中常考的最值与范围问题(举一反三专项训练)(全国通用)(含解析).docx
原创力文档


文档评论(0)