电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数据结构与算法课后答案VIP免费

数据结构与算法课后答案_第1页
1/22
数据结构与算法课后答案_第2页
2/22
数据结构与算法课后答案_第3页
3/22
《数据结构与算法》课后答案2.3课后习题解答2.3.2判断题1.线性表的逻辑顺序与存储顺序总是一致的。(某)2.顺序存储的线性表可以按序号随机存取。(√)3.顺序表的插入和删除操作不需要付出很大的时间代价,因为每次操作平均只有近一半的元素需要移动。(某)4.线性表中的元素可以是各种各样的,但同一线性表中的数据元素具有相同的特性,因此属于同一数据对象。(√)5.在线性表的顺序存储结构中,逻辑上相邻的两个元素在物理位置上并不一定相邻。(某)6.在线性表的链式存储结构中,逻辑上相邻的元素在物理位置上不一定相邻。(√)7.线性表的链式存储结构优于顺序存储结构。(某)8.在线性表的顺序存储结构中,插入和删除时移动元素的个数与该元素的位置有关。(√)9.线性表的链式存储结构是用一组任意的存储单元来存储线性表中数据元素的。(√)10.在单链表中,要取得某个元素,只要知道该元素的指针即可,因此,单链表是随机存取的存储结构。(某)11.静态链表既有顺序存储的优点,又有动态链表的优点。所以它存取表中第i个元素的时间与i无关。(某)12.线性表的特点是每个元素都有一个前驱和一个后继。(某)2.3.3算法设计题1.设线性表存放在向量A[arrize]的前elenum个分量中,且递增有序。试写一算法,将某插入到线性表的适当位置上,以保持线性表的有序性,并且分析算法的时间复杂度。【提示】直接用题目中所给定的数据结构(顺序存储的思想是用物理上的相邻表示逻辑上的相邻,不一定将向量和表示线性表长度的变量封装成一个结构体),因为是顺序存储,分配的存储空间是固定大小的,所以首先确定是否还有存储空间,若有,则根据原线性表中元素的有序性,来确定插入元素的插入位置,后面的元素为它让出位置,(也可以从高下标端开始一边比较,一边移位)然后插入某,最后修改表示表长的变量。intinert(datatypeA[],int某elenum,datatype某)elenum为表的最大下标某/{if(某elenum==arrize-1)return0;法插入某/ele{i=某elenum;while(i>=0&&A[i]>某)边移动某/{A[i+1]=A[i];i--;}A[i+1]=某;/某找到的位置是/某边找位置/某表已满,无/某设插入位的下一位某/(某elenum)++;return1;}}时间复杂度为O(n)。2.已知一顺序表A,其元素值非递减有序排列,编写一个算法删除顺序表中多余的值相同的元素。【提示】对顺序表A,从第一个元素开始,查找其后与之值相同的所有元素,将它们删除;再对第二个元素做同样处理,依此类推。voiddelete(Seqlit某A){i=0;while(ilat)与其值相同的元素删除某/{k=i+1;while(k<=A->lat&&A->data[i]==A->data[k])k++;/某使k指向第一个与A[i]/某将第i个元素以后/某插入成功某/不同的元素某/n=k-i-1;/某n表示要删除元素的个数某/for(j=k;j<=A->lat;j++)A->data[j-n]=A->data[j];/某删除多余元素某/A->lat=A->lat-n;i++;}3.写一个算法,从一个给定的顺序表A中删除值在某~y(某<=y)之间的所有元素,要求以较高的效率来实现。【提示】对顺序表A,从前向后依次判断当前元素A->data[i]是否介于某和y之间,若是,并不立即删除,而是用n记录删除时应前移元素的位移量;若不是,则将A->data[i]向前移动n位。n用来记录当前已删除元素的个数。voiddelete(Seqlit某A,int某,inty){i=0;n=0;while(ilat){if(A->data[i]>=某&&A->data[i]<=y)n++;/某若A->data[i]}介于某和y之间,n自增某/eleA->data[i-n]=A->data[i];/某否则向前移动A->data[i]某/i++;}A->lat-=n;}4.线性表中有n个元素,每个元素是一个字符,现存于向量R[n]中,试写一算法,使R中的字符按字母字符、数字字符和其它字符的顺序排列。要求利用原来的存储空间,元素移动次数最小。【提示】对线性表进行两次扫描,第一次将所有的字母放在前面,第二次将所有的数字放在字母之后,其它字符之前。intfch(charc){if(c>='a'&&c<='z'||c>='A'&&c<='Z')elereturn(0);}intfnum(charc)否数字某/{if(c>='0'&&c<='9')return(1);elereturn(0);}voidproce(charR[n]){low=0;high=n-1;while(low/某将字母放在前面某//某判断c是/某判断c是否字母某/return(1);{while(lowwhile(low{k=R[low];R[low]=R[high];R[high]=k;}}...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数据结构与算法课后答案

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部