C语言相关知识介绍1322.docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言相关知识介绍1322.docx》由会员分享,可在线阅读,更多相关《C语言相关知识介绍1322.docx(163页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1章 绪论一、基础知知识题1. 简述下下列概念念数据,数据据元素,数数据类型型,数据据结构,逻逻辑结构构,存储储结构,算算法。【解答】数数据是信信息的载载体,是是描述客客观事物物的数、字字符,以以及所有有能输入入到计算算机中并并被计算算机程序序识别和和处理的的符号的的集合。数据元素是数据的基本单位。在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。数据类型是是对数据据的取值值范围、数数据元素素之间的的结构以以及允许许施加操操作的一一种总体体描述。每每一种计计算机程程序设计计语言都都定义有有自己的的数据类类型。“数据结构构”这一术术语有两两种含义义,一是是作为一一门课程程的名称称;二是
2、是作为一一个科学学的概念念。作为为科学概概念,目目前尚无无公认定义,一一般认为为,讨论论数据结结构要包包括三个个方面,一一是数据据的逻辑辑结构,二二是数据据的存储储结构,三三是对数数据进行行的操作作(运算算)。而而数据类类型是值值的集合合和操作作的集合合,可以以看作是是已实现现了的数数据结构构,后者者是前者者的一种种简化情情况。数据的逻辑辑结构反反映数据据元素之之间的逻逻辑关系系(即数数据元素素之间的的关联方方式或“邻接关关系”),数数据的存存储结构构是数据据结构在在计算机机中的表表示,包包括数据据元素的的表示及及其关系系的表示示。数据据的运算算是对数数据定义义的一组组操作,运运算是定定义在逻
3、逻辑结构构上的,和和存储结结构无关关,而运运算的实实现则依依赖于存存储结构构。数据结构在在计算机机中的表表示称为为物理结结构,又称存储储结构。是是逻辑结结构在存存储器中中的映像像,包括括数据元元素的表表示和关关系的表表示。逻逻辑结构构与计算算机无关关。算法是对特特定问题题求解步步骤的一一种描述述,是指指令的有有限序列列。其中中每一条条指令表表示一个个或多个个操作。一一个算法法应该具具有下列列特性:有穷性、确确定性、可可行性、输输入和输输出。2. 数据据的逻辑辑结构分分哪几种种,为什什么说逻逻辑结构构是数据据组织的的主要方方面?【解答】数数据的逻逻辑结构构分为线线性结构构和非线线性结构构。(也也
4、可以分分为集合合、线性性结构、树树形结构构和图形形即网状状结构)。逻辑结构是是数据组组织的某某种“本质性性”的东西西:(1)逻辑辑结构与与数据元元素本身身的形式、内内容无关关。(2)逻辑辑结构与与数据元元素的相相对位置置无关。(3)逻辑辑结构与与所含数数据元素素的个数数无关。3. 试试举一个个数据结结构的例例子,叙叙述其逻逻辑结构构、存储储结构、运运算三方方面的内内容。【解答】学学生成绩绩表,逻逻辑结构构是线性性结构,可以顺序存储(也可以链式存储),运算可以有插入、删除、查询、等等。4. 简简述算法法的五个个特性,对对算法设设计的要要求。【解答】算算法的五五个特性性是:有有穷性、确确定性、可可
5、行性、零零至多个个输入和和一至多多个输出出。对算法设计计的要求求:正确确性,易易读性,健健壮性,和和高的时时空间效效率(运运算速度度快,存存储空间间小)。5. 设设n是正正整数,求求下列程程序段中中带记记号的语语句的执执行次数数。(1)i=1;kk=0; (2) i=11;j=0; wwhille(iin) whiile(i+jjj)j+; ellse i+; (3)x=yy=0; (4)x=991;yy=1000; forr(i=0;ii00) forr(j=0;jj1000) x+; xx=x-10; y-; forr(k=0;iin;i+) yy+; elsse xx+; 【解答】(1)
6、nn-1 (2)i= n/2 jj=n/2(3)n+1, n(nn+1), nn2,(nn+1)n2, nn3 (4)1000, 100006. 有有实现同同一功能能的两个个算法AA1和AA2,其其中A11的时间间复杂度度为Tll=O(2n),AA2的时时间复杂杂度为TT2=OO(n22),仅仅就时间间复杂度度而言,请请具体分分析这两两个算法法哪一个个好。【解答】对对算法AA1和AA2的时时间复杂杂度T11和T22取对数数,得nnlogg2和2llognn。显然然,当nn4时时,算法法A2好好于A11。7. 选选择题:算法分分析的目目的是( )A、找出数数据结构构的合理理性 BB、研究究算法中
7、中的输入入和输出出的关系系C、分析算算法的效效率以求求改进 D、分分析算法法的易懂懂性和文文档特点点【解答】CC二、算法设设计题8. 已已知输入入x,yy,z三三个不相相等的整整数,设设计一个个“高效”算法,使使得这三三个数按按从小到到大输出出。“高效”的含义义是用最最少的元元素比较较次数、元元素移动动次数和和输出次次数。void Besst()/按序序输出三三个整数数的优化化算法int aa,b,c,tt;scanff(“%d%d%dd”,&aa,&bb,&cc);if(ab) t=aa; a=bb; bb=t: /a和和b已正正序if(bc) tt=c; c=b; /c已已到位 if(at
8、t) b=aa; aa=t; /a和和b已正正序 elsse bb=t; printtf(“%d,%d,%dn”,a,b,cc); /最佳佳2次比比较,无无移动;最差33次比较较,7个个赋值9. 在在数组AAn中查找找值为kk的元素素,若找找到则输输出其位位置i(1in),否否则输出出0作为为标志。设设计算法法求解此此问题,并并分析在在最坏情情况下的的时间复复杂度。【题目分析析】从后后向前查查找,若若找到与与k值相同同的元素素则返回回其位置置,否则则返回00。int SSearrch(EleemTyype Ann+1, EElemmTyppe kk)i=n; wilee(i=1)&(Aii!=
9、k) i-; if(ii=11) rretuurn i; elsee reeturrn 00;当查找不成成功时,总总的比较较次数为为n+11次,所以以最坏情情况下时时间复杂杂度为OO(n)。第2章 线性表表一、基础知知识题2.1 试试述头指指针、头头结点、元元素结点点、首元元结点的的区别,说说明头指指针和头头结点的的作【解答】指指向链表表第一个个结点(或或为头结结点或为为首元结结点)的的指针称称为头指指针。“头指针针”具有标标识一个个链表的的作用,所所以经常常用头指指针代表表链表的的名字,如如链表LL既是指指链表的的名字是是L,也也是指链链表的第第一个结结点的地地址存储储在指针针变量LL中,头
10、头指针为为“NULLL”则表示示一个空空表。有时,我们们在整个个线性链链表的第第一个元元素结点点之前加加入一个个结点,称称为头结结点,它它的数据据域可以以不存储储任何信信息(也也可以做做监视哨哨或存放放线性表表的长度度等附加加信息),指指针域中中存放的的是第一一个数据据结点的的地址,空空表时为为空。 “头结点点”的加入入,使插插入和删删除等操操作方便便统一。元素结点即即是数据据结点,至至少包括括元素自自身信息息和其后后继元素素的地址址两个域域。首元结点是是指链表表中第一一个数据据元素的的结点;为了操操作方便便,通常常在链表表的首元元结点之之前附设设一个结结点,称称为头结结点。2.2分析析顺序存
11、存储结构构和链式式存储结结构的优优缺点,说说明何时时应该利利用何种种结构。【解答】从空间间上来看看,当线线性表的的长度变变化较大大,难以以估计其其规模时时,选用用动态的的链表作作为存储储结构比比较合适适,但链链表除了了需要设设置数据据域外,还还要额外外设置指指针域,因因此当线线性表长长度变化化不大,易易于事先先确定规规模时,为为了节约约存储空空间,宜宜采用顺顺序存储储结构。从时间上上看,顺顺序表具具有按元元素序号号随机访访问的特特点,在在顺序表表中按序序号访问问数据元元素的时时间复杂杂度为OO(1);而链链表中按按序号访访问的时时间复杂杂度为OO(n)。所以以如果经经常按序序号访问问数据元元素
12、,使使用顺序序表优于于链表。在顺序表中中做插入入删除操操作时,平平均移动动大约表表中一半半的元素素,因此此n较大大时顺序序表的插插入和删删除效率率低。在在链表中中作插入入、删除除,虽然然也要找找插入位位置,但但操作主主要是比比较操作作。从这这个角度度考虑显显然链表表优于顺顺序表。总之,两种种存储结结构各有有长短,选选择那一一种存储储结构,由由实际问问题中的的主要因因素决定定。2.3 分分析在顺顺序存储储结构下下插入和和删除结结点时平平均需要要移动多多少个结结点。【解答】平平均移动动表中大大约一半半的结点点,插入入操作平平均移动动 个结点点,删除除操作平平均移动动 个结点点。具体体移动的的次数取
13、取决于表表长和插插入、删删除的结结点的位位置。2.4 为为什么在在单循环环链表中中常使用用尾指针针,若只只设头指指针,插插入元素素的时间间复杂度度如何?【解答】单单循环链链表中无无论设置置尾指针针还是头头指针都都可以遍遍历表中中任一个个结点。设设置尾指指针时,若若在表尾尾进行插插入元素素或删除除第一元元素,操操作可在在O(11)时间间内完成成;若只只设置头头指针,表表尾进行行插入或或删除操操作,需需要遍历历整个链链表,时时间复杂杂度为OO(n)。2.5 在在单链表表、双链链表、单单循环链链表中,若若知道指指针p指指向某结结点,能能否删除除该结点点,时间间复杂度度如何?【解答:】以以上三种种链表
14、中中,若知知道指针针p指向向某结点点,都能能删除该该结点。双双链表删删除p所指向向的结点点的时间间复杂度度为O(1),而而单链表表和单循循环链表表上删除除p所指向向的结点点的时间间复杂度度均为OO(n)。2.6 下下面算法法的功能能是什么么?LinkeedLiist Unkknowwn(LLinkkedLListt laa) LLNodde *q,*p; if(lla & lla-nexxt) qq=laa; lla=lla-nexxt; p=lla; wwhille(pp-nnextt) pp=p-neext; pp-nnextt=q; q-neext=nulll; retturnn laa
15、; 【解答】将将首元结结点删除除并插入入到表尾尾(设链链表长度度大于11)。2.7 选择题题:在循循环双链链表的*p结点点之后插插入*ss结点的的操作是是( )la、p-neext=s; s-prriorr=p; pp-nnextt-pprioor=ss; s-nexxt=pp-nnextt;B、p-nexxt=ss; p-nexxt-priior=s; s-prriorr=p; ss-nnextt=p-neext;lc、s-prriorr=p; s-neext=p-nexxt; pp-nnextt:=ss; p-nexxt-priior=s; D、s-priior=p; snnextt=pn
16、exxt; pnexxt-priior =s; pp-nnextt=s; 【解答】DD2.8 选选择题:若某线线性表最最常用的的操作是是存取任任一指定定序号的的元素和和在最后后进行插插入和删删除运算算,则利利用( )存储储方式最最节省时时间。la顺序序表 B双链表表 lc带头结结点的双双循环链链表 DD单循循环链表表【解答】lla二、算法设设计题2.9 设设ha和hb分别别是两个个带头结结点的非非递减有有序单链链表的头头指针,试试设计算算法, 将这两两个有序序链表合合并成一一个非递递增有序序的单链链表。要要求使用用原链表表空间,表表中无重重复数据据。【题目分析析】因为为两链表表已按元元素值非非
17、递减次次序排列列,将其其合并时时,均从从第一个个结点起起进行比比较,将将小的链链入链表表中,同同时后移移链表工工作指针针,若遇遇值相同同的元素素,则删删除之。该该问题要要求结果果链表按按元素值值非递增增次序排排列,故故在合并并的同时时,将链链表结点点逆置。LinkeedLiist Uniion(LinnkeddLisst ha,hb) haa,hbb分别是是带头结结点的两两个单链链表的头头指针,链链表中的的元素值值按递增增序排列列本算法将将两链表表合并成成一个按按元素值值递减次次序排列列的单链链表,并并删除重重复元素素 ppa=hha-nexxt; pa是是链表hha的工工作指针针pb=hbb
18、-nnextt; pb是是链表hhb的工工作指针针 hha-nexxt=nnulll; ha作作结果链链表的头头指针,先先将结果果链表初初始化为为空 wwhille(ppa!=nulll & ppb!=nulll) 当两链链表均不不为空时时作 wwhille(ppa-nexxt & ppa-datta=pa-neext-daata) u=ppa-nexxt; pa-neext=u-nexxt; freee(uu)删除ppa链表表中的重重复元素素whilee(pb-neext & pb-daata=pbb-nnextt-ddataa) u=ppb-nexxt; pb-neext=u-nexxt;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 相关 知识 介绍 1322
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内