《数据结构与算法 C语言版》—— 3.8习题

简介:

本节书摘来自华章出版社《数据结构与算法 C语言版》一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.8习题

1名词解释:栈、队列、循环队列。
2如果输入序列为1,2,3,4,5,6,试问能否通过栈结构得到以下两个序列:4,3,5,6,1,2和1,3,5,4,2,6;请说明为什么不能得到或如何才能得到。
3试证明:若借助栈由输入序列1,2,…,n得到序列p1,p2,…,pn(它是输入序列的一个全排列),则在输出序列中不可能出现下列情况:存在i<j<k,使得pj4当函数f递归调用自身时,函数f内定义的局部变量在函数f的2次调用期间是否占用同一数据区?为什么?
5简要叙述循环队列的数据结构,并写出其初始状态、队列空、队列满时的队头指针和队尾指针的值。
6设有一个双端队列,元素进入该队列的次序为1,2,3,4,求既不能由输入受限的双端队列得到,又不能由输出受限的双端队列得到的输出序列。
7简述以下算法的功能。
(1)void algo1(Stack S){
int i,n,A[255];
n=0;
while(!StackEmpty(S)){n++;Pop(S,A[n]);};
for(i=1;i<=n;i++)Push(S,A[i]);
}
(2)void algo2(Stack S,int e){
Stack T;int d;
InitStack(T);
while(!StackEmpty(S)){Pop(S,d);if(d!=e)Push(T,d);}
while(!StackEmpty(T)){Pop(T,d);Push(S,d);}
}
(3)void algo3(Queue &Q){//栈和队列的元素类型均为int
Stack S;int d;
InitStack(T);
while(!QueueEmpty(Q)){DeQueue(Q,d);Push(S,d);}
while(!StackEmpty(S)){Pop(S,d);EnQueue(Q,d);}
}
8试写一个算法,识别依次读入的一个以@为结束符的字符序列是否为形如“序列1&序列2”模式的字符序列。其中,序列1和序列2中不含字符@,且序列2是序列1的逆序列。
9在火车调度站的入口处有n节硬席或软席车厢(分别以H和S表示)等待调度,试编写一个算法,输出对这n节车厢进行调度的操作(即入栈或出栈操作)序列,以使所有的软席车厢都被调整到硬席车厢之前。
10试写出求递归函数F(n)的递归算法,并消除递归。
F(n)=n+1n=0
n·F(n/2)n>0
11试将下列递归函数改为非递归函数:
void test(int ∑){
int x;
scanf("%d",&x);
if(x==0)sum=0;
else{test(sum);sum+=x;}
printf("sum=%d\\n",sum);
}
12设有整数列p1,p2,…,pn,给出求解其最大值的递归程序。
13假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的队列初始化、入队和出队的算法。
14假设称正读和反读都相同的字符序列为“回文”,试编写一个算法判别读入的一个以@为结束符的字符序列是否是“回文”。
15编写一个算法,借助于栈将一个单链表逆序输出。
16假设循环队列中只设rear和length来分别指示队尾元素的位置和队中元素的个数,试给出此循环队列的队满条件,并写出相应的入队和出队算法,要求出队时需返回队头元素。

相关文章
|
2月前
|
C语言
【C语言】循环结构程序设计(第二部分 -- 习题讲解)
【C语言】循环结构程序设计(第二部分 -- 习题讲解)
|
2月前
|
编译器 C语言
C语言习题----不同版本的差别
C语言习题----不同版本的差别
12 0
|
2月前
|
C语言
C语言-----习题
C语言-----习题
17 0
|
2月前
|
C语言
C语言习题
C语言习题
14 0
|
1天前
|
人工智能 C语言
C语言概述习题
C语言概述习题
3 0
|
10天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
10天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
10天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
10天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
10天前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)