数据结构第三章习题答案

第三章 栈与队列

一、 单项选择题

1、D A 2、A 3 C 4 B 5 D 6 C 7 D 8 C 9C 10 C 11 A 12A 13 A 14 D 15 B 16 D 17 C 18 C 19 D 20 B 21C 22 A D 23 B

二、填空题

1、后进先出

2、存储结构

3、链栈

4、可能的

5、lst=NULL

6、链栈头 链栈头

7、先进先出

8、存储结构

9、链对

三、判断题

1、错误 2、正确 3、正确 4、错误 5、错误

6、错误 7、正确 8、错误 9、正确 10、正确

11、正确 12、正确 13、正确

四、简答题

1、可能的次序有CDBAE 、 CDEBA 、 CDBEA

2、高级语言变量名的定义规则是:以字母开头的字母数字串。入栈次序为123PA ,以A 最先出栈的序列为AP321,以P 最先出栈的序列为P321A 、P32A1、P3A21、PA321。可以作为高级语言的变量名的序列为AP321、P321A 、P32A1、P3A21和PA321。

3、(1)能得到输出顺序为325641的序列,其操作序列为:AAADDAADADDD 。

(2)不能得到输出顺序为154623的序列;执行ADAAAADDAD ,得到输出序列1546后,栈中元素从栈顶到栈底为32,不能让2先出栈,所以得不到输出序列154623。

4、栈和队列是操作位置受限的线性表,即对插入和删除操作的位置加以限制。栈是仅允许在表的一端进行插入和删除操作的线性表,因而是后进先出表。队列是只允许在表的一端进行插入,另一端进行进行删除操作的线性表,因而是先进先出表。

5、由于在队列中操作遵循的原则是先进先出,出栈元素的顺序是bdcfea ,则元素进队的顺序也是bdcfea 。原素进队的顺序与元素出栈的顺序相同,在栈中存取数据遵循的原则是后进先出,要得到出栈序列bdcfea ,其操作如下表所示,可见栈的容量至少应该存放3个元素的空间。

进栈操作 栈中元素 出栈元素 a,b进栈

b出栈

cd进栈

d进栈

c出栈

f进栈

f出栈

e进栈

e出栈

a出栈

a,b a a,c,d a,c a a,f a a,e a a b d c f e a

五、算法设计题

1、typedef struct

{ ElemType S[MaxSize];

int top1,top2;

}StackType; //定义最小栈

void InitStack1(StackType &st) //初始化栈

{

st.top1=-1;

st.top2=MaxSize;

}

int StackEmpty1(StackType st,int i) //判断栈是否为空

{

if (i==)

return (st.top1==-1);

else //i=2

return (st.top2==MaxSize);

}

int Push1(StackType &st,int I,ElemType x) //进栈

{

if (st.top1==st.top2-1) //栈满

return 0;

if (i==1) //x入栈s1

{ st.top1++;

st.S[st.top1]=x;

}

else if (i==2) //x入栈s2

{ st.top2--;

st.S[st.top2]=x;

}

else return 0;

return 1;

}

int Pop1(StackType &st,int i,ElemType &x) //出栈

{

if (i==1) //s1出栈

{if (st.top1==-1) //s1栈空

return 0;

else

{ x=st.S[st.top1];

st.top1--;

}

}

else if (i==2) //s2出栈

{ if (st.top2==MaxSize) //s2栈空

return 0;

else

{ x=st.S[st.top2];

st.top2++;

}

}

else return 0;

return 1;

}

2、ElemType bottom(SqStack st)

{ ElemType x,y;

SqStack tmpst;

InitStack (tmpst); //初始化临时表

while(!StackEmpty(st)) //临时栈tmpst 中包含st 栈中逆转元素 { Pop(st,x);

Push(tmpst,x);

}

while (!StackEmpty(tmpst)) //恢复st 栈中原来的内容

{ Pop(tmpst,y);

Push (st,y);

}

return x;

}

3、void InitStack1(LiStack *&lst) //初始化栈

{

lst=NULL;

}

int StackEmpty1(LiStack *lst) //判断栈是否为空

{

return(lst==NULL);

}

void Push1(LiStack *&lst,ElemType x) //进栈

{

LiStack *p;

p=(LiStack *)malloc(sizeof(LiStack));

p->data=x;

p->next=lst; //插入*p结点作为第一个数据结点 lst=p;

}

int Pop1(LiStack *&lst,ElemType &x) //出栈

{

LiStack *p;

if (lst==NULL) //栈空的情况

return 0;

p=lst; //p指向第一个数据结点 x=p->data;

lst=p->next;

free(p);

return 1;

}

4、 int count (LiStack *lst)

{

LiStack *p=lst->next;

int n=0;

while (p!=NULL)

{ n++;

p=p->next;

}

return (n);

}

第三章 栈与队列

一、 单项选择题

1、D A 2、A 3 C 4 B 5 D 6 C 7 D 8 C 9C 10 C 11 A 12A 13 A 14 D 15 B 16 D 17 C 18 C 19 D 20 B 21C 22 A D 23 B

二、填空题

1、后进先出

2、存储结构

3、链栈

4、可能的

5、lst=NULL

6、链栈头 链栈头

7、先进先出

8、存储结构

9、链对

三、判断题

1、错误 2、正确 3、正确 4、错误 5、错误

6、错误 7、正确 8、错误 9、正确 10、正确

11、正确 12、正确 13、正确

四、简答题

1、可能的次序有CDBAE 、 CDEBA 、 CDBEA

2、高级语言变量名的定义规则是:以字母开头的字母数字串。入栈次序为123PA ,以A 最先出栈的序列为AP321,以P 最先出栈的序列为P321A 、P32A1、P3A21、PA321。可以作为高级语言的变量名的序列为AP321、P321A 、P32A1、P3A21和PA321。

3、(1)能得到输出顺序为325641的序列,其操作序列为:AAADDAADADDD 。

(2)不能得到输出顺序为154623的序列;执行ADAAAADDAD ,得到输出序列1546后,栈中元素从栈顶到栈底为32,不能让2先出栈,所以得不到输出序列154623。

4、栈和队列是操作位置受限的线性表,即对插入和删除操作的位置加以限制。栈是仅允许在表的一端进行插入和删除操作的线性表,因而是后进先出表。队列是只允许在表的一端进行插入,另一端进行进行删除操作的线性表,因而是先进先出表。

5、由于在队列中操作遵循的原则是先进先出,出栈元素的顺序是bdcfea ,则元素进队的顺序也是bdcfea 。原素进队的顺序与元素出栈的顺序相同,在栈中存取数据遵循的原则是后进先出,要得到出栈序列bdcfea ,其操作如下表所示,可见栈的容量至少应该存放3个元素的空间。

进栈操作 栈中元素 出栈元素 a,b进栈

b出栈

cd进栈

d进栈

c出栈

f进栈

f出栈

e进栈

e出栈

a出栈

a,b a a,c,d a,c a a,f a a,e a a b d c f e a

五、算法设计题

1、typedef struct

{ ElemType S[MaxSize];

int top1,top2;

}StackType; //定义最小栈

void InitStack1(StackType &st) //初始化栈

{

st.top1=-1;

st.top2=MaxSize;

}

int StackEmpty1(StackType st,int i) //判断栈是否为空

{

if (i==)

return (st.top1==-1);

else //i=2

return (st.top2==MaxSize);

}

int Push1(StackType &st,int I,ElemType x) //进栈

{

if (st.top1==st.top2-1) //栈满

return 0;

if (i==1) //x入栈s1

{ st.top1++;

st.S[st.top1]=x;

}

else if (i==2) //x入栈s2

{ st.top2--;

st.S[st.top2]=x;

}

else return 0;

return 1;

}

int Pop1(StackType &st,int i,ElemType &x) //出栈

{

if (i==1) //s1出栈

{if (st.top1==-1) //s1栈空

return 0;

else

{ x=st.S[st.top1];

st.top1--;

}

}

else if (i==2) //s2出栈

{ if (st.top2==MaxSize) //s2栈空

return 0;

else

{ x=st.S[st.top2];

st.top2++;

}

}

else return 0;

return 1;

}

2、ElemType bottom(SqStack st)

{ ElemType x,y;

SqStack tmpst;

InitStack (tmpst); //初始化临时表

while(!StackEmpty(st)) //临时栈tmpst 中包含st 栈中逆转元素 { Pop(st,x);

Push(tmpst,x);

}

while (!StackEmpty(tmpst)) //恢复st 栈中原来的内容

{ Pop(tmpst,y);

Push (st,y);

}

return x;

}

3、void InitStack1(LiStack *&lst) //初始化栈

{

lst=NULL;

}

int StackEmpty1(LiStack *lst) //判断栈是否为空

{

return(lst==NULL);

}

void Push1(LiStack *&lst,ElemType x) //进栈

{

LiStack *p;

p=(LiStack *)malloc(sizeof(LiStack));

p->data=x;

p->next=lst; //插入*p结点作为第一个数据结点 lst=p;

}

int Pop1(LiStack *&lst,ElemType &x) //出栈

{

LiStack *p;

if (lst==NULL) //栈空的情况

return 0;

p=lst; //p指向第一个数据结点 x=p->data;

lst=p->next;

free(p);

return 1;

}

4、 int count (LiStack *lst)

{

LiStack *p=lst->next;

int n=0;

while (p!=NULL)

{ n++;

p=p->next;

}

return (n);

}


相关内容

  • 超多大学课后习题答案与大家分享啦~~
  • 超多大学课后习题答案与大家分享啦~~.txt男人应该感谢20多岁陪在自己身边的女人.因为20岁是男人人生的最低谷,没钱,没事业:而20岁,却是女人一生中最灿烂的季节.只要锄头舞得好,哪有墙角挖不到?2500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://bbs ...

  • 大学课后习题答案
  • [大学四年100万份资料大集合] http://www.3che.com/forum.php?mod=viewthread&tid=7083&fromuid=582866 新视野大学英语课后习题答案1-4册全集 http://www.3che.com/forum.php?mod=vi ...

  • 时间序列分析练习题习题1某企业有如下资料
  • 时间序列分析练习题习题1. 某企业有如下资料: 要求计算:⑴第二季度平均每月销售额:⑵第二季度平均每月职工人数:⑶第二季度各月人均销售额(保留4位小数):⑷第二季度平均每月人均销售额(保留4位小数):⑸第二季度人均销售额(保留4位小数).习题1解:⑶第二季度各月(4 月.5月.6月)人均销售额:习题 ...

  • 大学课本课后习题答案
  • 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程第四册答案 http://www.10xiao.com/thread-7-1-1.html 新视野大学英语读写教程第三册答案 http://www.10xiao.com/thread- ...

  • 临淄区初中生物资源共建方案
  • 请大家在4月1日之前把手头的资源按照分工表中的联系方式发给相应的联系人.同时各校负责人安排好内部分工,及时进行试题整理工作,在4月底力争完成本项工作. 临淄区初中生物资源共建方案 本共建包括习题资源共建.课件资源共建.学案资源共建.视频资源共建等,于2011年4月首先开展习题资源共建工作,其他任务将 ...

  • [结构力学习题集](上)-第三章-第3章答案
  • 第三章 静定结构位移计算(参考答案) 1.( X ) 6.( X ) 10.A7ql 3 2.( O ) 7.( O ) 3.( X ) 4.( C ) 8.( O ) 9.( X ) 5.( O ) EI 11.DV140/(EI)() 13.DV 4 12.EV7ql/43 ...

  • 选修五 有机化学基础课后习题答案
  • <选修五 有机化学基础>课后习题参考答案 第一章 认识有机化合物 第一节 有机化合物的分类 1.A .D 2.D 3. (1)烯烃(2)炔烃(3)酚类(4)醛类(5)酯类(6)卤代烃 第二节 有机化合物的结构特点 1.4 4 共价 单键 双键 三键 2.3 3.B 4.C(CH3) 4 ...

  • 会计基础章节练习题答案第三章
  • 第三章会计科目与账户 一.单项选择题 1.( )具体一定的格式和结构,用于分类反映会计要素增减变动情况及其结果的载体. A.账户 B.会计科目 C.账簿 D.财务报表 2.下列关于账户和会计科目的表述中,错误的是( ). A.账户是会计科目的名称,会计科目是账户是具体应用 B.两者之间的区别在于账户 ...

  • 数字电子技术基础第二版(侯建军著)高等教育出版社课后答案
  • 课后答案网(http://www.khdaw.com) 第一章数字逻辑基础 第一节重点与难点 一.重点:1.数制2.编码 (1)二-十进制码(BCD码) 在这种编码中,用四位二进制数表示十进制数中的0~9十个数码.常用的编码有8421BCD码.5421BCD码和余3码. 8421BCD码是由四位二进 ...