第一章作业 一、选择题
1. 被计算机加工的数据元素不是孤立的,它们彼此之间一般存在某种关系,通常把数据元素之间的
这种关系称为( )。 A. 规则 B. 结构 C. 集合 D. 运算 2. 在Data_Structure=(D,S)中,D是( )的有限集合。
A. 数据元素 B. 算法 C. 数据操作 D.数据对象 3. 计算机所处理的数据一般具有某种关系,这是指( )之间存在的某种关系。
A. 数据与数据 B. 数据元素与数据元素 C. 元素内数据项与数据项 D. 数据文件内记录与记录 4. 顺序存储表示中数据元素之间的逻辑关系是由( )表示的。
A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 5. 链接存储表示中数据元素之间的逻辑关系是由( )表示的。
A. 指针 B. 逻辑顺序 C. 存储位置 D. 问题上下文 6. 从逻辑上可将数据结构分为( )。
A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 内部结构和外部结构 D. 线性结构和非线性结构 7. 以下选项属于线性结构的是( )。
A. 广义表 B. 二叉树 C. 串 D. 稀疏数组 8. 以下选项属于非线性结构的是( )。
A. 广义表 B. 队列 C. 优先队列 D. 栈 9. 以下属于逻辑结构的是( )
A. 顺序表 B. 散列表 C. 有序表 D. 单链表 10. 一个完整的算法应该具有( )等特性。
A. 可执行性、可修改性和可维护性 B. 可行性、确定性和有穷性 C. 确定性、有穷性和可靠性 D. 正确性、可读性和有效性
11. 若一个问题既可以用迭代方法也可以用递归方法求解,则( )的方法具有更高的时空效率。
A. 迭代 B. 递归 C. 先递归后迭代 D. 先迭代后递归 12. 一个递归算法必须包括( )
A. 递归部分 B. 终止条件和递归部分 C. 迭代部分 D. 终止条件和迭代部分
13. 算法的时间复杂度与( )有关。
A. 问题规模 B. 源程序长度 C. 计算机硬件运行速度 D. 编译后执行程序的质量
二、指出下列各算法的功能并求出其时间复杂度。 (1)
int Prime(int n){
int i=2,x=(int)sqrt(n); //sqrt(n)为求n的平方根 while(i<=x){
if(n%i==0)break; i++; }
if(i>x) return 1;
1
elsereturn 0; } (2)
int sum1(int n){ int p=1,s=0;
for(int i=1;i<=n;i++){ p*=i;s+=p; }
return s; } (3)
int sum2(int n){ int s=0;
for(int i=1;i<=n;i++){ int p=1;
for(int j=1;i<=i;j++) p*=j; s+=p; }
return s; } (4)
int fun(int n){ int i=1,s=1;
while(s void mtable(int n){ for(int i=1;i<=n;i++){ for(int j=i;j<=n;j++) cout< 2 第二章作业 一、选择题 1. 在线性表中的每一个表元素都是不可再分的( ) A. 数据项 B. 数据记录 C. 数据元素 D. 数据字段 2. 顺序表是线性表的( )存储表示。 A. 有序 B. 连续 C. 数组 D. 顺序存取 3. 若长度为n的非空线性表采用顺序存储结构,在表中的第i个位置插入一个数据元素,i的合法值 应该是( ) A. 1?i?n B. 1?i?n?1 C. 0?i?n?1 D. 0?i?n 4. 若设一个顺序表的长度为n,那么,在表中顺序查找一个值为x的元素时,在等概率的情况下, 查找成功的数据平均比较次数为( ) A. n B. n/2 C. (n?1)/2 D. (n?1)/2 5. 在长度为n的顺序表的表尾插入一个新的元素的时间复杂度为( ) A. O(n) B. O(1) C. O(n) 2D. O(log2n) 6. 数据结构反映了数据元素之间的结构关系。单链表是一种( )。 A. 顺序存储线性表 B. 非顺序存储非线性表 C. 顺序存储非线性表 D. 非顺序存储线性表 7. 单链表又称为线性链表,在单链表上实施插入和删除操作( ) A. 不需移动结点,不需改变结点指针 B. 不需移动结点,只需改变结点指针 C. 只需移动结点,不需改变结点指针 D. 既需移动结点,又需改变结点指针 8. 已知L是带头结点的单链表,则删除首元素结点的语句是( ) A. L=L->next; B. L->next=L->next->next; C. L=L->next->next; D. L->next=L; 9. 已知单链表A长度为m,单链表B长度为n,若将B链接在A的末尾,在没有链尾指针的情况下,算法的时间复杂度应为( )。 A. O(1) B. O(m) C. O(n) D. O(m?n) 10. 给定有n个元素的一维数组,建立一个有序单链表的时间复杂度是( ) A. O(1) B. O(n) C. O(n) 2D. O(nlog2n) 二、算法设计 1. 设计一个算法,从顺序表L中(SqList L)删除具有给定值x(ElemType x)的所有元素。 2. 设计一个算法,从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不相同。 3. 设计一个算法,在非递减有序的带头结点的单链表中删除值相同的多余结点。 3 第三章作业 一、选择题 1. 用S表示进栈操作,用X表示出栈操作,若元素的进栈顺序是1234,为了得到1342的出栈顺序, 相应的S和X的操作序列为( ) A. SXSXSSXX B. SSSXXSXX C. SXSSXXSX D. SXSSXSXX 2. 假设一个栈的输入序列是1,2,3,4,则不可能得到的输出序列是( ) A. 1,2,3,4 B. 4,1,2,3 C. 4,3,2,1 D. 1,3,4,2 3. 已知一个栈的进栈序列为1,2,3,…,n,其输出序列的第一个元素是i,则第j个出栈元素是( )。 A. j?i B. n?i C.j?i?1 D. 不确定 4. 已知一个栈的进栈序列为1,2,3,?,n,其输出序列是p1,p2,p3,?,pn。若p1?n,则pi的值是( ) A. i B. n?i C.n?i?1 D. 不确定 5. 已知一个栈的进栈序列为1,2,3,?,n,其输出序列是p1,p2,p3,?,pn。若p1?3,则p2的值是( ) A.一定是2 B. 一定是1 C.可能是1 D. 可能是2 6. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若p3?1,则p1的值是( ) A.一定是2 B. 可能是2 C.不可能是2 D. 一定是3 7. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若p3?3,则p1的值是( ) A.一定是2 B. 可能是2 C.不可能是1 D. 一定是1 8. 已知一个栈的进栈序列为p1,p2,p3,?,pn,其输出序列是1,2,3,?,n。若pn?1,则p1的值是( ) A. n?i?1 B. n?i C.i D. 不确定 9. 设栈S和队列Q的初始状态均为空,元素1,2,3,4,5,6,7,依次进入S。如果每个元素出栈后立即进 入队列Q,且7个元素的出队顺序为2,4,3,6,5,1,7,则栈S的容量至少是( ) A. 1 B. 2 C. 3 D. 4 10. 对中缀表达式3?2*(4?2*2?6*3)?5求值,在求值过程中扫描到6时,操作数栈和操作符栈的内容分别是( ) A. 3,2,4,2,2和+,*,(,+,* B. 3,2,4,4和+,*,(,+ C. 3,2,8和+,*,( 二、算法设计题 1. 详见《数据结构题集(C语言版)》第25页3.24。 2. 详见《数据结构题集(C语言版)》第25页3.25。 D. 3,2,8,6和+,*,(,- 4 第四章作业 11. 串是一种特殊的线性表,其特殊性体现在( ) A. 可以顺序存储 B. 数据元素是一个字符 C. 可以链式存储 D. 数据元素可以是多个字符 12. 设有两个串T和P,求P在T中首次出现的位置的运算叫做( )。 A. 求子串 B. 模式匹配 C. 串替换 D. 串连接 13. 下面关于串的叙述中,哪一个是不正确的?( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 14. 串的长度是指( ) A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 15. 两个串相等的充分必要条件是() A.串中所含的字符相同 B.串中所含字符的个数相同,且对应位置上的字符也相同 C.串中所含的字符个数相同 D.串中对应位置上的字符相同 6. 已知p=”abcaabbabcabaacbacb”,求出next函数值。 5