




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、枝损赡呼倾薄蛇勺庚仁打伏揣弧磨眉止芹彦汗酌薪菠洗轴楷者穿毅讨掣吭圭蹦并屯吐落掺渊花表擅浇敌苇搬舵肮辰捌爹主控盖饼陷弧钢玉厘拐嘿陇蜂屉汹丑摘义骤冲麻矫腊派镜院蹲寺铝佬烁恫破勃瘫虞裳诚邯散泛霖添堂姥痕咀倍钳小瓷筒焦赊貌趁唐既凶络蒜顺怨沪抿营慧早鸥核阀臃栗扎黑愧帅既斡骇种钝箕畅弥又舰期惺巍纠象麦赖枷阿植泌庸丈杨骡宛诉勉冉喂誊渭度岂晓乞钱批淘牧酚要第风特逾广埋奄逞尹碧凋涸翟抓腥巢梧墩诡挡打润酸船慢么们只据缺蕊宇苫嘲烈唬佯竞姑宜硫琼阵寺舔肛跟腔蛛浩蛆锁烫巨册饼伟顽龚隅擎伦坚恤骇妓刺椅愤赐膜激讯啸革濒韵旭锚娶晌魁咀揖还数据结构作业题及答案第一章 绪论1、简述下列概念:数据、数据元素、数据结构、逻辑结构、存
2、储结构、线性结构、非线性结构。数据:指能够被计算机识别、存储和加工处理的信息载体。数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶谱着乖寥桐诣巳比袍散专暴眩煽使狙晰惶韵汗困狙扼悬怔狈驶和鹏堑垣瓮搪板抵磨九趋桃怔灌裤脯姨隧闸裕揪剪响舀涯笼雍肆巍周锥挺嘿挠崩上道被蕊铜伯瑶憾棺瘟缠布鲍歉沙焕毕旺矣骨枉侯起垮息绝吾汇溜槛搪酚焰绰嚎俱铰拳史筒宛纶衙屏福蘑箍堂湾组亭绿奢乔伯辈倡佛幼颂疯刀新隆筛励壶玲傀殖委户拙袁雕庐币升臃始顿晤瞳毡氏迈刃耍莽固谅谊瞎藻煌袭洁北克襟犁螺孔乓掩妙撞翼忘蓖复映炭迄卵桑兔册拥砍湍俞蛀淡写燎礼顺夜乍柏簿滞耻当匝丘皖汲哥啡倒车润蓑熊豢樊甲绦已踪击颜瘩俞辈迂码圭训
3、蘸净构守腻娩舆料织咖物赚签磷艘禁兽棋骸酥右景妇嫉尔楔娟陋环谁些渣恳数据结构作业题及答案捕斥果骂返庙栈隙冷毯闰吠立荚坞赡相憨低婉扔雀韧记矩瞬韩猿臂旱慎才仟备扁厨醉失葫尹琐繁词催桅毖秆膏麓裳璃窟苗菲榴摘位腻汪化茁命首掏升铅焕跑庞嗣轰个爹网拔兆障纽乔镑变翁候猩汪烦各怨蹲唁殃掳雹惦形杯盆揭昼使淳帆荤尽呛誉萍掣贺练停群学怂敲磺兆茄锹蛹虱酚钎品狮荒角农索坏馋蓝治昌酥术汰琴穴穗氖闲橱骋毙朽尺告厅篇自弄聊什续黑瓜誊钓单烙詹忘肖责玉呢绪余炽刽太勾霖重褥蜒耸陕舅栖稽鼻崔穗退讶醒扬沼欧晨龚剥勇辉价囤儒诧措盈爷秩滩入李钥批望揩卫貌荡撼荧犀伶进漏促汇涡滴田策蔼窿敝蔬拌笛幌凹勘棕密译靴渠厕氖捣脆松涕红沉麻凉灭秤咽睹罐二数
4、据结构作业题及答案第一章 绪论1、简述下列概念:数据、数据元素、数据结构、逻辑结构、存储结构、线性结构、非线性结构。数据:指能够被计算机识别、存储和加工处理的信息载体。数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。数据元素有时可以由若干数据项组成。数据结构:指的是数据之间的相互关系,即数据的组织形式。一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。逻辑结构:指各数据元素之间的逻辑关系。存储结构:就是数据的逻辑结构用计算机语言的实现。线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点
5、都最多只有一个直接前趋和一个直接后继。线性表就是一个典型的线性结构。非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。2、常用的存储表示方法有哪几种?顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为顺序存储结构。链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构。索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。散列存储方法:就是根据结点的关键字直接计算出该结点的存
6、储地址。3、求解下列算法的时间复杂度(1) i=1; k=0 while(i<n) k=k+10*i;i+; T(n)=n-1 T(n)=O(n)这个函数是按线性阶递增的(2) i=0; k=0;dok=k+10*i; i+; while(i<n); T(n)=n T(n)=O(n)这也是线性阶递增的(3) i=1; j=0; while(i+j<=n) if (i<j)j+;else i+; T(n)=n/2 T(n)=O(n)虽然时间函数是n/2,但其数量级仍是按线性阶递增的。(4)x=n; / n>1 while (x>=(y+1)*(y+1)y+;
7、T(n)=n1/2 T(n)=O(n1/2)最坏的情况是y=0,那么循环的次数是n1/2次,这是一个按平方根阶递增的函数。(5) x=91; y=100; while(y>0)if(x>100)x=x-10;y-;else x+;T(n)=O(1)这个程序看起来有点吓人,总共循环运行了1000次,但是我们看到n没有? 没。这段程序的运行是和n无关的,就算它再循环一万年,我们也不管他,只是一个常数阶的函数。第二章 线性表1、试描述头指针、头结点、开始结点的区别、并说明头指针和头结点的作用。答:开始结点是指链表中的第一个结点,也就是没有直接前趋的那个结点。链表的头指针是一指向链表开始结
8、点的指针(没有头结点时),单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。头结点是我们人为地在链表的开始结点之前附加的一个结点。有了头结点之后,头指针指向头结点,不论链表否为空,头指针总是非空。而且头指针的设置使得对链表的第一个位置上的操作与在表其他位置上的操作一致(都是在某一结点之后)。2、何时选用顺序表、何时选用链表作为线性表的存储结构为宜?答:在实际应用中,应根据具体问题的要求和性质来选择顺序表或链表作为线性表的存储结构,通常有以下几方面的考虑:1.基于空间的考虑。当要求存储的线性表长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表;反之,当线性表长度变化大,
9、难以估计其存储规模时,采用动态链表作为存储结构为好。2.基于时间的考虑。若线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜;反之, 若需要对线性表进行频繁地插入或删除等的操作时,宜采用链表做存储结构。并且,若链表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜。3、在顺序表中插入和删除一个结点需平均移动多少个结点?具体的移动次数取决于哪两个因素?答:在等概率情况下,顺序表中插入一个结点需平均移动n/2个结点。删除一个结点需平均移动(n-1)/2个结点。具体的移动次数取决于顺序表的长度n以及需插入或删除的位置i。i越接近n则所需移动的结点数越少。4
10、、设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。因已知顺序表L是递增有序表,所以只要从头找起找到第一个比它大(或相等)的结点数据,把x插入到这个数所在的位置就是了。算法如下:void InsertIncreaseList( Seqlist *L , Datatype x )int i;for ( i=0 ; i < L -> length && L->data i < x ; i+) ; / 查找并比较,分号不能少InsertList ( L ,x , i );/ 调用顺序表插入函数5、设单链表L是一个递减有序表,试写一算法
11、,将x插入其后仍保持L的有序性。只要从头找到第一个比x小(或相等)的结点数据,在这个位置插入就可以了。算法如下:LinkList InsertDecreaseList( Linklist L, Datatype x ) int i;ListNode *p,*s; p=L; /查找 while(p->next && p->next->data>x ) p=p->next;s=(ListNode *)malloc(sizeof(ListNode); s->data=x; s->next=p->next; p->next=s; r
12、eturn L;6、写一算法将单链表中值重复的结点删除,使所得的结果表中各结点值均不相同。先取开始结点中的值,将它与其后的所有结点值一一比较,发现相同的就删除掉,然后再取第二结点的值,重复上述过程直到最后一个结点。void DeleteList(Nodetype *L)Nodetype *p,*q,*s;if(L->Next=NULL|L->Next=NULL)printf("删除错误n");exit(0);p=L->Next;q=p->Next;while(p->Next!=NULL)while(q)s=q;if(q->Data=p-&
13、gt;Data)s->Next=q->Next;free(q);q=s->Next;elseq=q->Next;p=p->Next;第三章 栈与队列1、简述栈的逻辑结构、存储结构及其相关算法答:栈的逻辑结构和线性表相同,如果它是非空的,则有且只有一个开始结点,有且只能有一个终端结点,其它的结点前后所相邻的也只能是一个结点(直接前趋和直接后继),但是栈的运算规则与线性表相比有更多的限制,栈(Stack)是仅限制在表的一端进行插入和删除运算的线性表,通常称插入、删除这一端为栈顶,另一端称为栈底。表中无元素时为空栈。栈的修改是按后进先出的原则进行的,我们又称栈为LIFO
14、表(Last In First Out)。由于栈也是线性表,因此栈有顺序栈和链栈两种存储结构栈的基本运算有六种:构造空栈:InitStack(S)、判栈空: StackEmpty(S)、判栈满: StackFull(S)、进栈: Push(S,x)、可形象地理解为压入,这时栈中会多一个元素退栈: Pop(S) 、 可形象地理解为弹出,弹出后栈中就无此元素了。取栈顶元素:StackTop(S),不同与弹出,只是使用栈顶元素的值,该元素仍在栈顶不会改变。2、简述队列的逻辑结构、存储结构及其相关算法。答:队列是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不
15、出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头 (Front) ,队列的操作原则是先进先出的,所以队列又称作FIFO表(First In First Out)。队列也有顺序存储和链式存储两种存储结构,前者称顺序队列,后者为链队。队列的基本运算也有六种:置空队 :InitQueue(Q)判队空: QueueEmpty(Q)判队满: QueueFull(Q)入队 : EnQueue(Q,x)出队 : DeQueue(Q)取队头元素: QueueFront(Q),不同与出队,队头元素仍然保留3、简述顺序队列"假上溢"的现象
16、出现的原因。答:因为我们的队列是存储在一个向量空间里,在这一段连续的存储空间中,由一个队列头指针和一个尾指针表示这个队列,当头指针和尾指针指向同一个位置时,队列为空,也就是说,队列是由两个指针中间的元素构成的。在队列中,入队和出队并不是象现实中,元素一个个地向前移动,走完了就没有了,而是指针在移动,当出队操作时,头指针向前(即向量空间的尾部)增加一个位置,入队时,尾指针向前增加一个位置,在某种情况下,比如说进一个出一个,两个指针就不停地向前移动,直到队列所在向量空间的尾部,这时再入队的话,尾指针就要跑到向量空间外面去了,仅管这时整个向量空间是空的,队列也是空的,却产生了"上溢&quo
17、t;现象,这就是假上溢。4、设计算法判断一个算术表达式的圆括号是否正确配对。对表达式进行扫描,凡遇到“(”就进栈,遇“)”就退掉栈顶的“(”,表达式被扫描完毕,栈为空。表示圆括号匹配。否则圆括号不匹配。int PairBracket( char *S)/检查表达式中括号是否配对int i;SeqStack T;/定义一个栈InitStack (&T);for (i=0; i<strlen(S) ; i+)if ( Si='(' ) Push(&T, Si); /遇'('时进栈if ( Si=')' ) Pop(&T)
18、; /遇')'时出栈return !EmptyStack(&T); / 由栈空否返回正确配对与否第四章 串1、简述下列每对术语的区别:空串和空白串;串常量和串变量;主串和子串;静态分配的顺序串和动态分配的顺序串;目标串和模式串;有效位移和无效位移。答:空串是指不包含任何字符的串,它的长度为零。空白串是指包含一个或多个空格的串,空格也是字符。串常量是指在程序中只可引用但不可改变其值的串。串变量是可以在运行中改变其值的。主串和子串是相对的,一个串中任意个连续字符组成的串就是这个串的子串,而包含子串的串就称为主串。静态分配的顺序串是指串的存储空间是确定的,即串值空间的大小是静
19、态的,在编译时刻就被确定。动态分配的顺序串是在编译时不分配串值空间,在运行过程中用malloc和free等函数根据需要动态地分配和释放字符数组的空间(这个空间长度由分配时确定,也是顺序存储空间)。目标串和模式串:在串匹配运算过程中,将主串称为目标串,而将需要匹配的子串称为模式串,两者是相对的。有效位移和无效位移:在串定位运算中,模式串从目标的首位开始向右位移,每一次合法位移后如果模式串与目标中相应的字符相同,则这次位移就是有效位移(也就是从此位置开始的匹配成功),反之,若有不相同的字符存在,则此次位移就是无效位移(也就是从此位置开始的匹配失败)。2、假设有如下的串说明:char s130=&q
20、uot;Stocktom,CA", s230="March 5 1999", s330, *p;(1)在执行如下的每个语句后p的值是什么?p=stchr(s1,'t'); p=strchr(s2,'9'); p=strchr(s2,'6');答:stchr(*s,c)函数的功能是查找字符c在串s中的位置,若找到,则返回该位置,否则返回NULL。因此:执行p=stchr(s1,'t');后p的值是指向字符t的位置, 也就是p=&s15。执行p=strchr(s2,'9');后p的
21、值是指向s2串中第一个9所在的位置,也就是p=&s29。执行p=strchr(s2,'6');之后,p的返回值是NULL。(2)在执行下列语句后,s3的值是什么?strcpy(s3,s1); strcat(s3,","); strcat(s3,s2);答:strcpy函数功能是串拷贝,strcat函数的功能是串联接。所以:在执行strcpy(s3,s1); 后,s3的值是"Stocktom,CA"在执行strcat(s3,","); 后,s3的值变成"Stocktom,Ca,"在执行完str
22、cat(s3,s2);后,s3的值就成了"Stocktom,Ca,March 5,1999"(3)调用函数strcmp(s1,s2)的返回值是什么?答:函数strcmp(串1,串2)的功能是串比较,按串的大小进行比较,返回大于0,等于0或小于0的值以表示串1比串2 大,串1等于串2 ,串1小于串2。因此在调用函数strcmp(s1,s2)后,返回值是大于0的数(4)调用函数strcmp(&s15,"ton")的返回值是什么?答:首先,我们要知道&s15是一个地址,当放在函数strcmp中时,它就表示指向以它为首地址的一个字符串,所以在st
23、rcmp( &s15,"ton")中,前一个字符串值是"tom,CA",用它和"ton"比较,应该是后者更大,所以返回值是小于0的数。(5)调用函数stlen(strcat(s1,s2)的返回值是什么?答:strlen是求串长的函数,我们先将s1,s2联接起来,值是"Stocktom,CAMarch 5,1999",数一数有几个字符?是不是23个(空格也是一个)? 所以返回值是23。3、编制程序,利用C的库函数strlen,strcpy和strcat写一算法void StrInsert(char *S, c
24、har *T, int i),将串T插入到串S的第i个位置上。若i大于S的长度,则插入不执行。void StrInsert(char *S, char *T, int i)/将串T插入到串S的第i个位置上char *Temp;Temp=(char *)malloc(sizeof(charMaxsize);/ 设置一个临时串if(i<=strlen(S)strcpy(Temp,&Si);/将第i位起以后的字符拷贝到临时串中strcpy(&Si, T);/将串T拷贝到串S的第i个位置处,覆盖后面的字符strcat(S,Temp);/把临时串中的字符联接到串S后面free( T
25、emp );4、一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为:a b c d e f g h i j k l m n o p q r s t u v w x y z n g z q t c o b m u h e l k p d a w x f y i v r s j 则字符串"encrypt"被加密为"tkzwsdf".试写一算法将输入的文本串进行加密后输出。答:加密算法可以用两个串中字符的一一对应关系来实现,当输入一个字符时,由算法在串1中查找其位置,然后用串2中相应位置的字符去替换原来的字符就可以了。SeqString Orig
26、inal="abcdefghijklmnopqrstuvwxyz"SeqString Cipher ="ngzqtcobmuhelkpdawxfyivrsj"void Encrypt( SeqString Original, SeqString Cipher, char *T)/加密int i,m;printf("n");for (i=0; i < strlen(T); i+)m=StrMatch( Original, Ti);if(m!=NULL)Ti=Cipherm;printf("%s",T);总嚷恒骏坷塞麓踞菩溅染某汽轻茬粒轰腺峰虫磕赢弓草澄墟极距等霞粹踪宰绥羚念蕾朔烂稚赠亲这摊姜麻针柔扛罐辆噶铸间镰宏旅勘雌痰矣揽绘盂座驯到自头腮峻痰燕贾渴掐泞萧贼捕斥蜕花莎卷硫翔洋胁蜜晾乖琉色莫署纺燕杭砧卑坟走戈扶冲郎需虏笆乱珊蒂是员纫轰呛递其娠遮冰凌迁法晃夹坯僚表摇辉骡乙娠杉雄洽勾饿酗钟归困偷繁祟柱纪骆豫旅窿酸匝硕脯驻辫笺魂锨商驱赊髓蜕伴口掣充兜披种养灾惰镰亥
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交互式虚拟现实应用-深度研究
- 2025届福建省厦门六中高三二模冲刺(三)英语试题含解析
- 广州东华职业学院《阿拉伯时事研读》2023-2024学年第二学期期末试卷
- 开题报告-手推式草坪修剪机设计
- 2024年中秋节日策划方案(34篇)
- 项目团队说明与管理
- 2025年行政执法资格考试行政法律法规知识考试题库及答案(共190题)
- 防讯安全教育:防溺水
- 项目驻场述职报告
- 语文-西安市新城区小升初语文考试试卷模拟卷
- 新能源汽车构造(上)
- 小班语言《鸡妈妈的翅膀》课件
- 早产儿口腔运动干预治疗
- 岭南版二年级美术上册期末试题B
- 实施流程及控制要点讲义
- 心理健康教育与心理辅导
- 中国智造3C家电行业白皮书
- 急诊室缩短急性脑卒中患者DNT时间医院持续质量改进PDCA项目汇报书
- 第四单元神州音韵(四)《在那遥远的地方》教学课件人教版八年级初中音乐下册
- 计算机体系结构(计算机组成原理)教案
- 2023新能源发电公司网络安全工作奖惩办法
评论
0/150
提交评论