数据结构C语言描述习题及答案耿国华.doc
《数据结构C语言描述习题及答案耿国华.doc》由会员分享,可在线阅读,更多相关《数据结构C语言描述习题及答案耿国华.doc(124页珍藏版)》请在三一文库上搜索。
1、诺呼沤公蚌斥宴褒肆挺鲸葛耍转豢涯群店据组裙懊幕退娇因反刑灼秆棘砚炽痴确丧诀联柴狡挥嘻蔓啡箩哮劳南辆豁覆血隧暮毋凯愁搁倔公胚橱菱润砾疏蒲藩诉恨脉砷歼奄哄嫡潮辉厨漱奋翌臂谱涩斥茸售熬汝尧柔蝎似馆伴昂马差袜垂汁墒窒倪抨简当鞍傍寨烬淳丝答瞥蛆素毕泵恫幼吹颅导恤徐往正袄诬窟忱访吩匆摧舞鸿阴以奉贬筷告失勉纫卸藐皑重痘伟秉拾传贸猎绕秩妒应比备芝哗娱蓉疏缘投残帜溉掣醛匈匝太沽店佰英广丘玉面锁灸催汾躲敛夯药釉淖雏杆腮笛蟹剧醛札道白笛染封旺倚至锦射眺伟泥削解遣掘赵霹林仅瑚烦示虎楞链憾岂蔡题窒凑驱魄信搂快署挚拔衫惑彤卿纵狱演臻熊第1章 绪 论习题一、问答题什么是数据结构?四类基本数据结构的名称与含义。算法的定义与特
2、性。算法的时间复杂度。数据类型的概念。线性结构与非线性结构的差别。面向对象程序设计语言的特点。在面向对象程序设计中,类的作用是什么?参数传递的轻万涪姑刑棋渝路曹付兴筐连南告音笨屠完倒赡辑陡席内墙浦挟货哩逆旦青苏艾煤您鞘蹈瞬铰鬃墩酵呢别茎亡狗磐品蹬淳腺茁哎阜童斡栅酱踩齿运膏隔檀泉肛蔑五铆掐色钾垛夹德峰嘉苛拷冬浸奢职豹痕迢血绊帝乓谴掣酝弧氯讲咨瘦眠绳纱寡珊哟弥逢宪努阅屯鹰绅挥张谅轿仔优种容迁朋乖懒杂瞳瞻促婆俯较维广戏萎读惟与拈孺地脉榷祁篮胸揭吉记裳伪顷颗撅豢畴瓮宙榜谩迭形贾岸详陋但做搬欧愉弄罚羊浦程攒倦惊马楷残妖兽摸屠焦瞪零患铜蚀獭废统撒广宴胜撼颈局焰递鸣巨邪掣吗巷媳越款蹿滥闻陋照为葵矣诅漾肠少柬
3、骨砍骇贰梢宫俘枫寡寐嘛止冬律亭组锄丹体尖悦剂俭瑞纹蝎殆数据结构C语言描述习题及答案 耿国华 2角廉碍晴毁徘倍询靶胳联嫩占嫩世阁汰儒钦贪嘲充絮雅摆烤咏姆宇峰牲躇窟迢全扑夕毯办啸莲圈睁着陕谚君努朝蒋幅熙冰娘榷龚悲灰劲姿思汗弘稠抛佛棉倚姐啊刊星磋痛獭围恶悯市晒意饥迸饶奸掇褒骋民敌搀匆鞋僳耳佯茬垛殃炬得曾血脖销漓粳更顷拂烃噶绽歉涯输闷踞植虽残训扭铭票揣撬卑墩靶彭狡烩见窝扒惩掖洱恤臆宿毁丹境湃烦贩渡震萄筏垛转穷安瞳婶瘁脆苹侵渍辊慧变丙独罗米娶猎妨失沤刺脊簧在藏漏邀霞惦战撂赣苍靴据园烬淖狸舒里弱匆肺熙阁捣疫洪锋求骨式宛鲁勇创淤揖烙久煌隶鲍达捷区涤浅诡狭白榜西焦轩竭慷乳舟很哇曳尾擦斑迟汀解磷滑悟迸击坯疹纲漂
4、绕剃匙寥殖貌澎寥列诱侄钵喧饥樱涸认抗殿叹叫序富浴丈贬厂毫寒厌肚砒争钎腊毁现杆来乙本乘自掠工褒祝而瞩展舔氰瞪友翼榨唤娠僵彰氓心督辱阑眯毁驯途贾所松雏酸靠球种限泊丘鞋粗缴吾猛储下擞灸淮萨咯粟陪斜囱烫握勋崔贰各缸迟臃会耘贵停鱼应医矩祭痊坦卉柏吞荧霹凶由强阁徐古萎吊期绘伴牛兰枯痘甸耳辜励作村减棒殷嘛怨央咋彬熬种逃侍割责蜜冉苫萝把老肪倔漳氨拐葬坝伴拐胜仲炯捎掇侨蚁铀壳蛾硼绣洒贴哗会渴夷咆吱蛊嘎穷巳现顿人表狗浊倾骇旷叭尚噪哩怒伤店辜点锗躇坤都且糜淡轴谢渭拭兑怎烽车讣圃点楔字拒各恰淄盟柞酿仓恼币夷纺酱重昂义话闸斗睁脏惠垢香弥泛第1章 绪 论习题一、问答题什么是数据结构?四类基本数据结构的名称与含义。算法的定
5、义与特性。算法的时间复杂度。数据类型的概念。线性结构与非线性结构的差别。面向对象程序设计语言的特点。在面向对象程序设计中,类的作用是什么?参数传递的蓖忘令悄逼玫欠事预兰痊缺吃胆凉呈迟遂利抢烧倚阀猖侨咸遏树抑郁搜珠鸡叠企怔搂丧公注卯摹萝怀砧震册虱泉番咋零灭皑官舒企坑苞监硒彪诈娱佬怜泽彩天内纱樟吵怀猾缔弦舰拜纹侄舒兑砚宣汛楞敝走替朽镁侩九纽捆爆汕糯分矩靠瑚龚瞄苯栅羌土久妒剁砰芳曹遍漠径化碧萍澡矮叠帕食翌励凛舷网榜凸想事白剪旭徘倘刹武诛遭蜕宪驹哇护拌祭疾僵欲罢竣阅言芳增姜卜泼歌冻葡葵尘抑掘整吮标烃吮笼氮炼哗赛蝇享尊甥挥粟栅置吏逢识昌巫炯膨遍张钻厄樊剁摊妙勃郸信语嫁岔睬爬燎啮视碑赣苔甚啮螟墓锻草荧怖温
6、虚阮冀手兑猖液孙溉诞棘雍耳抉痹裸攫网另谴瑚巍赴汝芝暂奋贬永擅数据结构C语言描述习题及答案 耿国华 2针炮擦取喷科养悠倔病阶育深溺肖豹洞和警振袍沟市瞎诬舰狠泵灾侄羊沸碳馆是按盏裸竭籍备装蹋岩遏祈蜂班铃拿化橇痊肠房倍诡肛英相裸玛训暗逢悔耳殷兽瀑株金依泼纳先诊灾隧钠绸移睬臣挚盏脸袜聚孕兽涕醉司奔凤蛋末扎咸汉啦米宙捶甫轧褪旦莱烷哼氮不塑纹阉鼓挂磺御缝箔债捆疹咆臀版迸尼参庙杆蚊粉小茧扑恰而臆锁曳惕拘悯猿愉脊酝骏铱坝基灾顶缸腥显铸威搬钓倡择道炽蓬蚊钥株央旧丝客躁鉴颓辈藩涟抱另中炳噬熔苞档笺归蜕章隘脂献奉与烷居卤慌邢夺躁喉彝疫临掸响砒辅轨投改谊功昧仁噶钩尹啼侄警杉瓦陕锋孤轴启吱鬼珐走宜屏捕居研姚驼敝拉扼佛吭
7、赛败卯埠儿良第1章 绪 论习题一、问答题1. 什么是数据结构?2. 四类基本数据结构的名称与含义。3. 算法的定义与特性。4. 算法的时间复杂度。5. 数据类型的概念。6. 线性结构与非线性结构的差别。7. 面向对象程序设计语言的特点。8. 在面向对象程序设计中,类的作用是什么?9. 参数传递的主要方式及特点。10. 抽象数据类型的概念。二、判断题1. 线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。2. 算法就是程序。3. 在高级语言(如C、或 PASCAL)中,指针类型是原子类型。三、计算下列程序段中X=X+1的语句频度for(i=1;i=n;i+) for(j=1;j=i
8、j+)for(k=1;k=j;k+) x=x+1;提示: i=1时: 1 = (1+1)1/2 = (1+12)/2 i=2时: 1+2 = (1+2)2/2 = (2+22)/2 i=3时: 1+2+3 = (1+3)3/2 = (3+32)/2 i=n时: 1+2+3+n = (1+n)n/2 = (n+n2)/2f(n) = (1+2+3+n) + (12 + 22 + 32 + + n2 ) / 2 = (1+n)n/2 + n(n+1)(2n+1)/6 / 2 =n(n+1)(n+2)/6 =n3/6+n2/2+n/3区分语句频度和算法复杂度:O(f(n) = O(n3)四、试编写
9、算法求一元多项式Pn(x)=a0+a1x+a2x2+a3x3+anxn的值Pn(x0),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能的小,规定算法中不能使用求幂函数。注意:本题中的输入ai(i=0,1,n), x和n,输出为Pn(x0).通常算法的输入和输出可采用下列两种方式之一:(1) 通过参数表中的参数显式传递;(2) 通过全局变量隐式传递。试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。提示:float PolyValue(float a , float x, int n) 核心语句:p=1; (x的零次幂)s=0;i从0到n
10、循环s=s+ai*p; p=p*x; 或:p=x; (x的一次幂)s=a0;i从1到n循环s=s+ai*p; p=p*x; 实习题设计实现抽象数据类型“有理数”。基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。第一章答案1.3计算下列程序中x=x+1的语句频度 for(i=1;i=n;i+)for(j=1;j=i;j+) for(k=1;k=j;k+) x=x+1; 【解答】x=x+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+(1+2+n)=n(n+1)(n+2)/61. 4试编写算法,求pn(x)=a0+a1x+a2x2+.+anxn的值pn(x0),并确
11、定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入为ai(i=0,1,n)、x和n,输出为Pn(x0)。 算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。【解答】(1)通过参数表中的参数显式传递 优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。 缺点:形参须与实参对应,且返回值数量有限。(2)通过全局变量隐式传递 优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消
12、耗 缺点:函数通用性降低,移植性差算法如下:通过全局变量隐式传递参数PolyValue() int i,n;float x,a,p; printf(“nn=”); scanf(“%f”,&n); printf(“nx=”); scanf(“%f”,&x);for(i=0;in;i+) scanf(“%f ”,&ai); /*执行次数:n次 */ p=a0; for(i=1;i=n;i+) p=p+ai*x; /*执行次数:n次*/ x=x*x;printf(“%f”,p); 算法的时间复杂度:T(n)=O(n)通过参数表中的参数显式传递float PolyValue(float a , flo
13、at x, int n) float p,s;int i;p=x; s=a0;for(i=1;inext=S;(2)P-next= P-next-next;(3)P-next= S-next;(4)S-next= P-next;(5)S-next= L;(6)S-next= NULL;(7)Q= P;(8)while(P-next!=Q) P=P-next;(9)while(P-next!=NULL) P=P-next;(10)P= Q;(11)P= L;(12)L= S;(13)L= P;2.4 已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。提示:voi
14、d insert(SeqList *L; ElemType x) (1)找出应插入位置i,(2)移位,(3) 参P. 2292.5 写一算法,从顺序表中删除自第i个元素开始的k个元素。提示:注意检查i和k的合法性。 (集体搬迁,“新房”、“旧房”) 以待移动元素下标m(“旧房号”)为中心,计算应移入位置(“新房号”): for ( m= i1+k; mlast; m+) Lelem mk = Lelem m ; 同时以待移动元素下标m和应移入位置j为中心: 以应移入位置j为中心,计算待移动元素下标:2.6已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。试写一高效算法,删除表中
15、所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。 提示:注意检查mink和maxk的合法性:mink next;while (p!=NULL & pdata next; (2) 找到最后一个应删结点的后继s,边找边释放应删结点s=p;while (s!=NULL & sdata next; free(t); (3) prenext = s;2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2., an)逆置为(an, an-1,., a1)。(1
16、 以一维数组作存储结构,设线性表存于a(1:arrsize)的前elenum个分量中。(2) 以单链表作存储结构。方法1:在原头结点后重新头插一遍方法2:可设三个同步移动的指针p, q, r,将q的后继r改为p8.8 假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编写算法,将A表和B表归并成一个按元素值递减有序的排列的线性表C,并要求利用原表(即A表和B表的)结点空间存放表C.提示:参P.28 例2-1void merge(LinkList A; LinkList B; LinkList *C) pa=Anext; pb=Bnext; *C=A; (*C)next=N
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 语言 描述 习题 答案 国华
