《数据结构——语言描述》+课后题答案.doc

《数据结构——语言描述》+课后题答案.doc

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据结构——语言描述》课后题答案

/computer/book/read/data-structure/h座机电话号码2.html 习题解答 唐策善版 其他版本在上面 第一章 绪论(参考答案) 1.3 1 O n 2 O n 3 O n 4 O n1/2 5 x,y值变化如下: 循环次数 x y 0(初始) 91 100 1 92 100 2 93 100 …… …… …… 9 100 100 10 101 100 11 91 99 12 92 100 …… …… …… 20 101 99 21 91 98 …… …… …… 30 101 98 31 91 97 到y 0时,要执行10*100次,可记为O(10*y) O(1) 1.5 2100 , 2/3 n , log2n , n1/2 , n3/2 , 3/2 n , nlog2n , 2 n , n! , n n 第二章 线性表 参考答案 在以下习题解答中,假定使用如下类型定义: (1)顺序存储结构: #define MAXSIZE 1024 typedef int ElemType;// 实际上,ElemType可以是任意类型 typedef struct ElemType data[MAXSIZE]; int last; // last表示终端结点在向量中的位置 sequenlist; 2)链式存储结构(单链表) typedef struct node ElemType data; struct node *next; linklist; 3)链式存储结构(双链表) typedef struct node ElemType data; struct node *prior,*next; dlinklist; 4)静态链表 typedef struct ElemType data; int next; node; node sa[MAXSIZE]; 2.1 头指针:指向链表的指针。因为对链表的所有操均需从头指针开始,即头指针具有标识链表的作用,所以链表的名字往往用头指针来标识。如:链表的头指针是la,往往简称为“链表la”。 头结点:为了链表操作统一,在链表第一元素结点(称为首元结点,或首结点)之前增加的一个结点,该结点称为头结点,其数据域不无实际意义(当然,也可以存储链表长度,这只是副产品),其指针域指向头结点。这样在插入和删除中头结点不变。 开始结点:即上面所讲第一个元素的结点。 2.2 只设尾指针的单循环链表,从尾指针出发能访问链表上的任何结点。 2·3 void insert ElemType A[],int elenum,ElemType x // 向量A目前有elenum个元素,且递增有序,本算法将x插入到向量A中,并保持向量的递增有序。 int i 0,j; while i elenum A[i] x i++; // 查找插入位置 for j elenum-1;j i;j-- A[j+1] A[j];// A[i] x; // 插入元素 // 2·4 void rightrotate ElemType A[],int n,k // 以向量作存储结构,本算法将向量中的n个元素循环右移k位,且只用一个辅助空间。 int num 0; // 计数,最终应等于n int start 0; // 记录开始位置(下标) while num n temp A[start]; //暂存起点元素值,temp与向量中元素类型相同 empty start; //保存空位置下标 next start-K+n %n; // 计算下一右移元素的下标 while next ! start A[empty] A[next];// 右移 num++; // 右移元素数加1 empty next; next next-K+n %n; // 计算新右移元素的下标 A[empty] temp; // num++; start++; // 起点增1,若num n则开始下一轮右移。 // 算法结束 算法思想:先将左面n-k个元素逆置,接着将右面k个元素逆置,最后再将这n个元素逆置。 void rightrotate ElemType A[],int n,k // n个元素循环右移k位,且只用一个辅助空间。 ElemType temp; for i 0;i n-k /2;i++ //左面n-k个元素逆置 temp A[i]; A[i] A[n-k-1-i]; A[n-k-1-i] temp; for i 1;

文档评论(0)

ojd475 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档