数据结构(1,2,3章)课后题答案

《数据结构(1,2,3章)课后题答案》由会员分享,可在线阅读,更多相关《数据结构(1,2,3章)课后题答案(41页珍藏版)》请在文档大全上搜索。
1、授课教师:耿国华 教授西北大学可视化技术研究所西北大学可视化技术研究所第一章:绪论n1.2判断题(在各题后填写判断题(在各题后填写“”或或“”):): (1)线性结构只能用顺序结构来存放,非线性 结构只能用非顺序结构来存放。() (2)算法就是程序。() (3)在高级语言(如C或 PASCAL)中,指针类型是原子类型。()西北大学可视化技术研究所西北大学可视化技术研究所n1.3填空题:填空题: (1)变量的作用域是指 变量的有效范围 (2)抽象数据类型具有 数据抽象 、 信息隐蔽 的特点。 (3)一种抽象类型包括 数据对象 、 结构关系 和 基本操作 。西北大学可视化技术研究所西北大学可视化技
2、术研究所 (4)当需要用一个形式参数直接改变对应实参的值时,该形式参数应说明为 指针类型 。 (5)数据结构的逻辑结构分为 集合结构 、 线性结构 、 树形结构 和 图结构 四种。 (6)数据结构的存储结构分为 顺序存储结构 和 链式存储结构 两种。西北大学可视化技术研究所西北大学可视化技术研究所 (7)在线性结构、树形结构和图结构中,数据元素之间分别存在着 一对一 、 一对多 和 多对多 的联系。 (8)算法是规则的有限集合,是为解决特定问题而规定的 操作序列 。 (9)算法具有 有限性 、确定性、 可行性 、 输入 、输出五大特性。 西北大学可视化技术研究所西北大学可视化技术研究所n1.4
3、 1.4 选择题选择题 (1)若需要利用形式参数直接访问修改实参值,则应将形参说明为 A 参数。 A.指针 B.值参数西北大学可视化技术研究所西北大学可视化技术研究所 (2)执行下面的程序段的时间复杂度为 C 。 for(int i=0;im;i+) for(int j=0;jn;j+) aij=i*j; A.O(m2) B. O(n2) C. O(m*n) D. O (m+n)西北大学可视化技术研究所西北大学可视化技术研究所n(3)执行下面程序段时,语句S的执行次数为 C 。 for(int i=0;i=n;i+) for(int j=0;j=i;j+) S; A. n2 B. n2/2 C
4、. (n+1) (n+2)/2 D. n(n+1)/2西北大学可视化技术研究所西北大学可视化技术研究所n5.5.计算下列程序段中x=x+1的语句频度: for(i=1;i=n;i+) for(j=1;j=i;j+) for(k=1;k=j;k+) x=x+1; 思路:语句频度即为时间频度,拆分循环语句, 先从后两个for循环开始思考,最后循环i值。 第一步: 西北大学可视化技术研究所1(1)1 2 3 .2iji iji 西北大学可视化技术研究所n第二步:计算结果 2ni= 111(1 + i)i222nniiii22211(12.)(1 2 .)22nn 1(21)(1)1(1)()()26
5、22nnnn n32623nnn西北大学可视化技术研究所n6.6.编写算法,求一元多项式: 算法描述: void dxs(int a,int n,int x) int temp=x; /temp保存x的幂次方 int sum=0; /sum保存多项式的计算结果 int i,j,k; int bn; /bi保存多项式的每一项的带全值 for(j=0;j=n;j+) bj=1; b0=a0; /x的0次方与x的0次方的系数的乘积 b1=a1*x; /x的1次方与x的1次方的系数的乘积n西北大学可视化技术研究所西北大学可视化技术研究所 for(j=2;j=n;j+) /从x的2次方开始,到x的n次方
6、结束 for(k=2;k=j;k+) temp=temp*x; /保存x的m次方 bj=aj*temp; /x的m次方与x的m次方的系数的乘积 temp=x; for(i=0;i=n;i+)sum=sum+bi; cout多项式的值是:sumnext= P-next; A. P-next=S; b.在P结点前插入S结点的语句序列是: H. Q= P; L. P= L; I. while(P-next!=Q) P=P-next; 西北大学可视化技术研究所西北大学可视化技术研究所 E. S-next= P-next; A. P-next=S; c. 在表首插入S结点的语句序列是 F. S-next
7、= L; M. L= S; 。d. 在表尾插入S结点的语句序列是: L. P= L; J. while(P-next!=NULL) P=P-next; A. P-next=S; G. S-next= NULL; 。西北大学可视化技术研究所供选择的语句有: A. P-next=S; B. P-next= P-next-next; C. P-next= S-next; E. S-next= P-next; F. S-next= L; G. S-next= NULL; H. Q= P; I. while(P-next!=Q) P=P-next; J. while(P-next!=NULL) P=P-
8、next; K. P= Q; L. P= L; M. L= S; N. L= P;西北大学可视化技术研究所 (3)某线性表中最常用的操作是存取序号为i的元素和在最后进行插入和删除运算,则采用 D 存储方式 时间性能最好。 A双向链表 B双向循环链表 C单向循环链表 D顺序表 (4)下列选项中, D 项是链表不具有的特点。 A插入和删除运算不需要移动元素 B所需要的存储空间与线性表的长度成正比 C不必事先估计存储空间大小 D可以随机访问表中的任意元素西北大学可视化技术研究所 (5)在链表中最常用的操作是删除表中最后一个结点和在最后一个结点之后插入元素,则采用 C 最节省时间。 A. 头指针的单向
9、循环链表 B双向链表 C带尾指针的单向循环链表 D带头指针双向循环链表 (6)在线性表中最常用的操作是存取第i个元素及其前趋的值,可采用 A 存储方式。 A顺序表 B单向链表 C双向循环链表 D单向循环链表西北大学可视化技术研究所n5.写一个算法,从顺序表中删除自第i个元素开始的k个元素。 算法描述:以待移动元素下标m为中心, 计算应移入位置: for ( m= i1+k; mlast; m+) Lelem mk = Lelem m ;西北大学可视化技术研究所n8.假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编写算法,将A表和B表归并成一个按元素值递减有序排列的线性表
10、C,并要求利用原表(即A表和B表的)结点空间存放表C。西北大学可视化技术研究所n 算法描述:要求利用现有的表A和B中的结点空间来建立新表C,可通过更改结点的next域来重新建立新的元素之间的线性关系。为保证新表递减有序可以利用头插法建立单链表的方法,只是新建表中的结点不用malloc,而只需要从A和B中选择合适的点插入到新表C中即可。西北大学可视化技术研究所合并两个有序的单链表算法演示 LinkList MergeLinkList(LinkList A,LinkList B) /*将递增有序的单链表A和B合并成一个递减有序的单链表C*/ Node *pa,*pb,*smaller; LinkL