数据结构期末练习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.数据的不可分割的基本单位是 ( A )。
A.元素B.结点C.数据类型D.数据项
2.计算机处理数据的最小单位是( D )。
A.元素B.结点C.数据类型D.数据项
3.算法是指 ( C )。
A.计算方法B.排序方法
C.解决问题的有限运算步骤D.查找方法
4.顺序存储结构中数据元素之间的逻辑关系是由( C )表示的
A 线性结构
B 非线性结构
C 存储位置
D 指针
5.单循环链表的主要优点是( B )。
A 不再需要头指针了
B 从表中任一结点出发都能扫描到整个链表;
C 已知某个结点的位置后,能够容易找到它的直接前趋;
D 在进行插入、删除操作时,能更好地保证链表不断开。
6.一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是( C )。
A 54321
B 45321
C 43512
D 12345
此题的解决步骤是如果出现一个三元素顺序是a、b、c,且a>c>b,则为不可能序列
7.常对数组进行的两种基本操作是( B )
A.建立和删除B.索引和修改C.插入和修改D.插入和索引8.算法分析的两个主要方面是( A )。
A空间性能和时间性能 B正确性和简明性 C 可读性和文档性 D 数据复杂性和程序复杂性
在解决计算机主机与打印机之间速度不匹配问题时通常设置一个打印缓冲区,该缓冲区应该是一个( B )结构。
)(3n O )!(n O )2(n O 键盘中输入并初始化字符串
Scanner sc=new Scanner;
StringBuffer s=new StringBuffer());
2. 定义一个变量char ch;
定义一个变量int i;
3. 加密过程
对字符串中每个字符的ASCII 值+1
for(i=0;i<();i++)
{
ch=(i);
ch=(char)((int)(ch)+1);
(i,ch);
}
4.输出加密之后的结果
"加密之后的字符串是:"+s);
5.解密过程
对加密串中每个字符的ASCII 值执行-1操作
for(i=0;i<();i++)
{
ch=(i);
ch=(char)((int)(ch)-1);
(i,ch);
}
6.输出加密之后的结果
"解密之后的字符串是:"+s);
1.写出利用栈,将非负的十进制整数M转化为基于N的N进制数的算法。
1.定义变量
int m,n,e,i;
定义栈
SeqStack
2.从键盘获取非负的十进制整数
"请输入要转换的十进制正数:");
Scanner sc=new Scanner;
m=();
3.获取转化为基于N的N进制数
"请输入要转换的数制:");
n=();
4.用M除N,得到商数和余数,将余数放入栈中;
当商数不为0,继续用商数除N,得到新的商数和余数,余数入栈。
当商数为0,循环结束。
while(m!=0)
{
e=m%n;
(e);
m=m/n;
}
5.输出转化结果,若N为16时则按照如下规则输出结果
"转化结果为:");
while()!=true)
{
i=();
if(n==16)
{
if(i==10) 'A'+"");
else if(i==11) 'B'+"");
else if(i==12) 'C'+"");
else if(i==13) 'D'+"");
else if(i==14) 'E'+"");
else if(i==15) 'F'+"");
else "");
}
else "");
}
}
}
2.写出利用栈和队列,判断一个字符串是否是回文串的算法。
1.取出字符串中的一个字符,分别入栈和入队列。
boolean pal(String str)
{
for(i=0;i<();i++)
{
ch=(i);
(ch); (ch);
}
2.重复第1步,直到字符串结束。
3.栈顶元素出栈,队头元素出队列,两者比较是否相等
如果不相等,则该字符串不是回文串
如果相等,重复第3步,直到栈为空或者队列为空。
while()==false)
{
ch1=(); ch2=();
if(ch1!=ch2) return false;
}
4.如果栈为空或者队列为空,则该字符串是回文串。
if()==true) return true;
3.写出求n!的递归算法。
int fun(int n){
if(n==1||n==0)
return 1;
else
return n*fun(n-1);
}
4.写出求2个正整数m*n的递归算法。
int mul(int m,int n){
if(m==0||n==0)return 0;
else if(m==1)return n;
else return n+mul(m-1,n);
}
5.写出递归算法求数组中最大值、最小值和平均值。
求数组中的最大值
1.定义递归函数
int max(int A[], int n)