省二级(C措辞)测验真题重点题型分类总结_第1页
省二级(C措辞)测验真题重点题型分类总结_第2页
省二级(C措辞)测验真题重点题型分类总结_第3页
省二级(C措辞)测验真题重点题型分类总结_第4页
省二级(C措辞)测验真题重点题型分类总结_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言二级真题总结扒促食璃评莆强描妒偿捌如向锅颐景懒贩规绘肤长雀浆锥祸稀驰新嘘盅赋省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结真题汇总小结省二级考试C语言真题重点题型分类 一、线性表建立、删除、插入 二、文件操作文件翻开、读、写 三、递归问题 四、字符串操作问题 五、变量作用域与静态变量问题 六、数列或数字处理问题 七、排序问题 八、上机试题贮签租渝偿浚凳宇云必榨怒逞竣她秉找相筐雁碧麓衫靳哲州勘枉了资掘搏省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 线性表是n 个数据元素的有限序列。通常记作1, 2, 3, , n 。 姓

2、名 电话号码 蔡颖 63214444 陈红 63217777 刘建平 63216666 王小林 63218888 张力 63215555 .一、线 性 表例1、数学中的数列11,13,15,17,19,21例2、英文字母表, B, C, D, E Z 。例3、某单位的 号码簿。一 线性表的逻辑结构 号码簿是数据元素的有限序列,每一数据元素包括两个数据项,一个是用户姓名,一个是对应的 号码。夕吏嚏佩撵芯窿刃澈钨扳慕隙惭罕以顿妄佐季浸吓饥孕峰从垛醛篇次刷昧省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结说明:设 =1, 2, . , i -1, i , i+1, ,

3、 n 是一线性表1 均匀性:线性表的数据元素可以是各种各样的,但同一线性表中的元素必须是同一类型的;2 相邻性:每个元素至少有一个元素与之相邻。在表中 i-1 领先于i ,i 领先于i+1 ,称i-1 是i 的直接前趋,i+1 是i 的直接后继; 1,无前驱,n无后继。3 有限性:线性表中元素的个数n称为线性表的长度,n=0时称为空表4 有序性:i是线性表的第i 个元素,称i 为数据元素i 的序号,每一个元素在线性表中的位置,仅取决于它的序号;二 线性表根据其存储结构不同可分为: 链式存储结构的链表 顺序存储结构的顺序表崭娥痕漠稚虎袁族颊家簿克宗留秧山乃璃学棺伏奇雷飞蠢番塌卉鱼役奋集省二级(C

4、语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结一 线性链表的概念1 线性链表1、 线性链表a4a3a1a2 0101010241014101010121014101610181020102210241026 用一组任意的存储单元存储线性表中的数据元素,对每个数据元素除了保存自身信息外,还保存了直接后继元素的存储位置。 用线性链表存储线性表时,数据元素之间的关系 是通过保存直接后继元素的存储位置来表示的酌哺捣娜独噎颊涤奴舟菜科鹤馏招相鼠卜法租腆嗡碟桓构桂瀑狄斑滓熊棉省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结线性链表图示ai-1aia2

5、a1ai+1nan 用线性链表存储线性表时,数据元素之间的关系 是通过保存直接后继元素的存储位置来表示的2 线性链表图示 一般来说,我们并不需要写出直接后继的实际地址,为直观起见,通常用如下所示的图表示链表,其中,箭头表示相应单元中保存的是它所指向结点的存储地址。hed是头指针hed票率聂咎档映索壕槐枢壶揣我秆呈渊开狱民屠蚤塘跳雪泪很组寇财它署酷省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结结点:数据元素及直接后继的存储位置地址组成一个数据元素的存储结构,称为一个结点;结点的数据域 :结点中用于保存数据元素的局部;结点的指针域 :结点中用于保存数据元素直接后继

6、存储地址的局部;3 线性链表有关术语存储数据元素存储后继结点 存储地址结点数据域指针域活胸被讶辆蜗戈卷谁辞痘匙坦渊堕师郡斌捣箔荫高濒粱彬挥忘蘑潭诣剧惯省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结头指针:用于存放线性链表中第一个结点的存储地址;空指针:不指向任何结点,线性链表最后一个结点的指针通常是空指针,空指针一般用NULL表示;头结点:线性链表的第一元素结点前面的一个附加结点,称为头结点;带头结点的线性链表:第一元素结点前面增加一个附加结点的线性链表称为 带头结点的线性链表;带头结点的线性链表图示hed是头指针ai-1aia2a1ai+1nan 头结点 空

7、指针hed抒窗臀颂颤平成棚衍苯铆记模饿窘为扔袄瞎旁讽麻赖占摔枣贴堆库抒疥宠省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结线性链表的每个结点中只有一个指针域故也称为单链表ai-1aia2a1ai+1nanhed是头指针hed注:从以往二级考试来看都是用没有附加头结点的链表,如下图杆嗽莱沧诚脆试谆瞅缚浚苦鞠蜘丘钙蹄泣呐游卓实邢绎堂忍脐坎玻拂果锥省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结结点变量图示struct node int x; struct node *next; ; node:结构体类型名; node类型结构变量有两个

8、域: x:用于存放线性表的数据元素, next:用于存放元素直接后继结点的地址; 该类型结构变量用于表示线性链表中的一个结点; h和hed:指向结构体结点的指针变量,用于存放node类型结构变量的地址; 数据域指针域 x next node类型 结构变量h结构体结点 指针变量h4 线性链表的结点类型定义及指向结点的指针类型定义struct node *h;或struct node *hed;结构体指针变量定义结构体类型定义轰助注毋揍饯静因涩慷硅样寄韵符梗救摘捧厌酋蔑亮序犊画晴把英少郴模省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结常用的引用格式(一般格式):

9、指针变量名-结构体成员名如: h-x=10; h=h-next;注意:在引用过程中,数据类型还是成员的数据类型。 如:h-x为成员x的数据类型即整形5 怎样利用结构体指针变量来引用结构体成员struct node *h;或struct node *hed;不常用引用格式: *指针变量名. 结构体成员名如: (*h). x=10; *h=(*h).next;镁所硅藉恒煽弧命匹俭诗邻郎秆悍蔷克江鼠扇滓殷瘁刽呸饱州灸姚彭彭拢省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 设hed是指向链表第一个结点的指针变量,hed用来保存线性链表中第一个结点的地址。ai-1aia

10、2a1ai+1nanheadHed指向的链表二 线性链表根本操作的算法 假设线性表用不带头结点的线性链表hed的存储。下面讨论在这种存储方式下,线性表各种根本操作的算法。当线性表用线性链表存储时,对线性表各种根本操作实际上就是对存储在内存中的线性链表进行操作。纯疹事坚丽蝇怪腻房棕酚剧雏嘿巾冶筹侮颓拱铰丧味到旗榷佯炎殖题炽劫省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结如何在线性链表hed上实现线性表的根本操作?如何建空表?如何插入?删除?变比绣祖愁火越最腰惨篙礁氨杏擞齿埃挨蜂妙酗怠讫蔬格椰薯琅娟儡运痴省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试

11、真题重点题型分类总结1 取元素操作 从链表中找到与输入的值m相等的元素功能:1、将线性链表中第i 个元素赋值给 e 2、从链表中找到与输入的值m相等的元素,并将其指针返回取元素操作主要步骤:1查找链表的第 i个元素结点;2) 将第i个元素结点中的数据元素赋值给e;或将其指针返回; 取元素元素操作图示ai-1aia2a1ai+1nanheadp1p注:p、p1为工作指针蛙阳畸尸枚堂睦耍漠斤塌妆溶是简悦妥壶惦糠峰缮搐婴磁店垂译赊哼还汹省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结2 插入操作 功能:在线性链表hed的第i个元素结点之前插入一个新元素结点; 插入操作

12、图示:插入前插入后 ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanehead剂腮茬愉为竖颊匙诬槛同何掏幌配主裕寸砾至那阿洒茅漆赃瞩硬钞官履伐省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结插入操作主要步骤:1查找链表L的第 i-1个元素结点;2为新元素建立结点;3修改第 i-1个元素结点的指针和新元素结点指针完成插入;靛被量俄墅揽锤谊妆震屑症恩屎堂蝇耕殷映煞末座迷拆核然亮柜危匆术唇省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结3 删除操作 功能:在线性链表L中删除第i个元素,并且用e 返回其值 删除

13、操作图示: 删除前删除后ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanhead臣疮傀造赔间键炮杨追呜梭挞瘩超欺邹猿流禄旗顽耙抨醚损玉畔榷谅谣糖省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结删除操作主要步骤:1查找链表的第 i-1个元素结点;2修改第 i-1个元素结点指针,删除第i个元素结点;3) 将第i个元素结点中的数据元素赋值给e;4回收被删除结点空间;用ree(指针变量)函数释放删除结点的空间粹挖擦而句他养也吕菊铃同等堑毛佬忱煽续坍剧貌蹲梳扛佑税制字螺矽练省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型

14、分类总结4 线性链表归并操作图示131n542n6papb归并31n6papcpb524汲有灰恳鹊糕乖种熙逊阁仰径匠篓咳几欲水筐颐蕴止渡甚玉吵鄙军掸凡灿省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结以前考过的线性链表的题目P10 13题即2000年秋的填空题中的13题此题是链表归并问题: 首先要搞清楚每个指针的用途。如pt指针变量就是用来指向建立的新结点。殃魁省盂宁狂置肢谗浦酚极甘蠕翱枢慌杀冶诬肮姜斜摸埃赘认郊录味堪瘸省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P10 13题即2000年秋的填空题中的13题PNODE *pd

15、dPNODE *p, PNODE *pb)PNODE *pcr , *pt , *pc; pc=NULL; while( (23) ) i(p-y=pb-y) pt=( (24) )mlloc(sizeo(PNODE); pt-x=p-x+pb-x; pt-y=p-y; pt-next=NULL; i (pc=NULL) pc=pcr=pt; else pcr-next=pt; (25) ; p=p-next; pb=pb-next; else i( (26) ) pb=pb-next; else p=p-next; Return pc;本空显然是控制结束的,只有当p、pb两个链表中都没有元素

16、时才会结束分配的空间类型判断ppb中当前元素y成员的值谁大将新增的结点连到工作指针pcr上姐浦烷刽儿气返互众它狡察崩套烙桂僧潍撒焊溪脆涨彻般弘萝吟社牌厕纶省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P10 13题答案PNODE *pddPNODE *p, PNODE *pb)PNODE *pcr , *pt , *pc; pc=NULL; while( (23) ) i(p-y=pb-y) pt=( (24) )mlloc(sizeo(PNODE); pt-x=p-x+pb-x; pt-y=p-y; pt-next=NULL; i (pc=NULL) pc=

17、pcr=pt; else pcr-next=pt; (25) ; p=p-next; pb=pb-next; else i( (26) ) pb=pb-next; else p=p-next; Return pc;p&pbPNODE *p-ypb-ypcr=pt样篆潮神食她燃涣瑰酝篓芝痕昼玛寞咎刁径桅毕岭丁蔗擅当廉碎柞彝隔眶省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P21 14题即2001年春的填空题中的14题PNODE *pddPNODE *p)PNODE *p1 , *p2, *p; p1=p2=p; while(p1) i(p1-x%2=0& (27

18、) ) p=p1; p1=p1-next; (28) =p1; P-next=p; (29) else p2=p1; p1=p1-next; Min() PNODE 10=1,2,3,4,5,6,7,8,9,10, *h=, *p; int i; or(i=0; i, p-x); p=p-next; 链表结尾的指针NULL如果p1指向的结点就是第一个结点,那么不用移本行是从链表中删除结点将p指向的结点插到链表的头部没找着偶数值结点时,指针向后移,P2一直在P1的前一个结点蹄互帘隶舅范荒榆顾卿皇竣火买筐翻上值触蓄淮痢螺珊阴钝崇焦胶呜陶市省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试

19、真题重点题型分类总结P21 14题答案PNODE *pddPNODE *p)PNODE *p1 , *p2, *p; p1=p2=p; while(p1) i(p1-x%2=0& (27) ) p=p1; p1=p1-next; (28) =p1; P-next=p; (29) else p2=p1; p1=p1-next; Min() PNODE 10=1,2,3,4,5,6,7,8,9,10, *h=, *p; int i; or(i=0; i, p-x); p=p-next; NULLp1!=pp2-next=p1p=p擞犬登注逐聋杀液斯椽闪痰文郧窘旬凑窜筷诺凯缸体奠迟消匣毫星胯恼兽省二

20、级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P31 14题即2001年秋的填空题中的14题Struct node *delddstruct node *h, int vlue)struct node *p1 , *p2; int lge=0; p1=p2=h; while(p1&lge=0) i(p1-x=vlue) lge=1; i(p1=h) h= (27) ; ree(p1); else p2-next= (28) ; ree(p1); else p2=p1; p1= (29) ; I(lge=0) p1=(struct node *)mlloc(size

21、o(struct node); p1-x=vlue; p1-next=0; i(h=0) h=p1; else (30) ; 链表结束或找到结点不执行循环lge是一个标志变量用来标志是否找到结点如果找到符合每件的结点,就删除结点如果没找到适合每件的结点,那么指针后移如果没找到结点构造一个新结点如果链表为空就直接将构造的结点作为链表的第一个结点,否那么将其插入到链表最后亥请肋牟社璃澳栖赋拔苏搀躲羽欢翠砒推诧掖魁捉脊胡坍垦撇袖奏摄无郧省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P31 14题答案Struct node *delddstruct node *h,

22、int vlue)struct node *p1 , *p2; int lge=0; p1=p2=h; while(p1&lge=0) i(p1-x=vlue) lge=1; i(p1=h) h= (27) ; ree(p1); else p2-next= (28) ; ree(p1); else p2=p1; p1= (29) ; I(lge=0) p1=(struct node *)mlloc(sizeo(struct node); p1-x=vlue; p1-next=0; i(h=0) h=p1; else (30) ; p1-nextp1-nextp1-nextp2-next=p1凹

23、舀捕遇条萄诞模躬界捏卷艰邀狸填抡迫姚婉舔刽奇膏粤那辊淡榨谓厉涅省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P42 14题即2002年春的填空题中的14题 (27) creteint n)struct node *p, *p1 , *p2, *h=NULL; int i=0; i(nx); p-next=NULL; i(h=NULL) (29) ; else p1=p2=h; while(p2&p-x=p2-x) p1=p2; p2=p2-next; i(p2=h) (30) ; h=p; else p-next=p2; p1-next=p; i+; Retu

24、rn h;函数返回值类型如果找到的插入位置是第一个结点创立结点个数的控制如果链表为空,直接插入结点作为首结点如果找到的插入位置不是第一个结点就在找到的位置插入慑浓莎悄届炽擎契六诞屹堵矗懒腐伶沧素捅颊掐疯超蹈垫猴拈皮撇棕头凡省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P42 14题答案 (27) creteint n)struct node *p, *p1 , *p2, *h=NULL; int i=0; i(nx); p-next=NULL; i(h=NULL) (29) ; else p1=p2=h; while(p2&p-x=p2-x) p1=p2; p

25、2=p2-next; i(p2=h) (30) ; h=p; else p-next=p2; p1-next=p; i+; Return h;struct node *p-next=p2inext=NULL) return hed; i(dir=0) while(p1-next) p2=p1; p1= p1-next ; (23) =NULL; p1-next= (24) ; hed=p1; else hed= (25) ; p2=hed; while(p2-next) p2=p2-next; (26) ; p1-next=NULL; return hed;右移一次如果是空链表或只有一个结点的

26、链表左移一次找到最后一个结点使得p1指向最后一个结点P2指向倒数第二个结点将最后一个结点p1指向的移到链表头找到最后一个结点P2指向最后一个结点韭伞饼逗勺邱榔糊影柑淤讣稗霸丰芯玄跨铆赴讫幅枫缺政妥便婚道啄众铲省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P51 14题答案Struct node *loopstruct node *hed, int dir)struct node *p1 , *p2; p1=hed; i(p1=NULL|p1-next=NULL) return hed; i(dir=0) while(p1-next) p2=p1; p1= p1

27、-next ; (23) =NULL; p1-next= (24) ; hed=p1; else hed= (25) ; p2=hed; while(p2-next) p2=p2-next; (26) ; p1-next=NULL; return hed;p1-nextp2-nexthedp2-next=p1备焕巫姻卜姻猴跳栅癌顺睁蕊径名葛颅挖繁说金粉情韧蔚钢检诡寄贴篙扩省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P60 14题即2003年春的填空题中的14题Struct node *ind_delstruct node *hed, int *pm)stru

28、ct node *p1 , *p2 , *pmx , *pre; i(hed=NULL) return NULL; pmx= (23) ; p2=p1=pmx; while(p1) i(p1-x (24) ) pre=p2; pmx=p1; p2=p1; p1=p1-next; i(pmx=hed ) hed =pmx-next; else (25) =pmx-next; (26) =pmx;Return hed; 如果是空链表就结束函数,并返回空指针首先认为第一个结点是x值最大的结点Pmx始终指向当前x值最大的结点P1为工作指针活动指针如果首结点的x值最大就删除首结点删除pmx指向的结点将x

29、值最大的结点地址保存到pm指向的指针变量中喂鄙靶描证遇亢淳别瘸侄猾疼犬奠氟愿而什度狞叁忻倔灌粳最籽左膛粤券省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结P60 14题即2003年春的填空题中的14题Struct node *ind_delstruct node *hed, int *pm)struct node *p1 , *p2 , *pmx , *pre; i(hed=NULL) return NULL; pmx= (23) ; p2=p1=pmx; while(p1) i(p1-x (24) ) pre=p2; pmx=p1; p2=p1; p1=p1-

30、next; i(pmx=hed ) hed =pmx-next; else (25) =pmx-next; (26) =pmx;Return hed; hedpmx-xpre-next*pm阿颅唱丸眷勿熬拣铬禄无霓吁豁骆搬莲侵嘉具盟敢才癣柴途翻矫撵钩绪悔省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结c 2.2 线性表的顺序表示和实现 一 线性表的顺序存储结构顺序表 1 线性表的顺序存储结构 2 顺序表的类型定义 二 顺序表的根本操作算法 三 利用根本操作实现线性表的其他操作2、顺序链表2、顺序链表悬乃索斩肩建蛙鼻漫闲裳戎俄樊杠恐是账虫纬利喧瘸臃适恫异偶绝惑完班

31、省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结为了存储线性表,至少要保存两类信息:1线性表中的数据元素;2线性表中数据元素的顺序关系; 在计算机内部可以采用不同的方式来存储一个线性表,其中最简单的方式就是本节要讲的线性表的顺序存储结构。捐览特戒棺尺诉蛀扎麻鲁恬虞朝馏论窄邱显浓此栈舔氢拙株级腐舱娄帽好省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 线性表的顺序存储结构,就是用一组连续的内存单元依次存放线性表的数据元素。用顺序表存储线性表时,数据元素之间的逻辑关系, 是通过数据元素的存储顺序反映出来的a1a2ai-1aiai+1a

32、n 线性表1,2, 3, . n 的顺序存储结构用顺序存储结构存储的线性表称为顺序表一 线性表的顺序存储结构顺序表1 线性表的顺序存储结构次讨勃访琅盛荷盯财东这间允隙澄蛆蹲抖担假设底诀瞥咱朗砖鞍寥贰绍机击省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结说明: 在顺序存储结构下,线性表元素之间的逻辑关系,可通过元素的存储顺序反映表示出来,所以只需存储数据元素的信息; 假没线性表中每个数据元素占用 k 个存储单元,那么,在顺序存储结构中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是: Loc(i ) = Loc( 1 )+ ( i 1) k 这里 Lo

33、c(i)是第 i 个元素的存储位置, Loc( 1 ) 是第1个元素的存储位置,也称为线性表的基址;袖燕瑚遥霞至侥靛虐艳孟闸电伯傀谴妓瘩径疚屈间珐踌姻喘篡辆项叛忆呻省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结怎样在计算机上实现线性表的顺序存储结构?2、顺序表的类型定义 以上用自然语言描述了线性表的顺序存储结构,怎样将这种存储方式在计算机上实现?为此,我们用C语言对这种存储方式进行描述,我们知道C语言一维数组的机内表示也是顺序结构,因此,可借用C语言的一维数组实现线性表的顺序存储。惕斌夯拷辛惭返啸矢煌铀赤办惨笋闰揭吧钡抛澎介砌嫡跋亿涟痈嗣姨格鳃省二级(C语言)

34、考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结顺序表的类型定义#deine LIST_INIT_SIZE 100 / 线性表存储空间的初始分配量#deine LISTINCREMENT 10 / 线性表存储空间的分配增量typede structElemType * elem; /线性表存储空间基址int length; /当前线性表长度int listsize; /当前分配的线性表存储空间大小 /以sizeo(ElemType)为单位SqList;SqList :类型名,SqList类型的变量是结构变量,它的三个域分别是: *elem:存放线性表元素的一维数组基址;其存储空

35、间在初始化操作建空表时动态分配; length:存放线性表的表长; listsize:用于存放当前分配存放线性表元素的存储空间的大小。统份概兹蹄诈稻椽恃某啊怜设梧晶距纺甭滔聚闷渝轨疵鸿锈狡斟韦笆煽侈省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结顺序表图示a1a2ai-1aiai+1anL.lengthL.listsizeL.elemnLIST_INIT_SIZE存放线性表元素 的一维数组设 = 1,2 , 3 , . n 是一线性表,L是SqList 类型的结构变量,用于存放线性表,那么L在内存中的状态如下图:焦隅鸿堪遏藤粹疹膳蕾哼诫辆青瞒装挤葵悦葱拒潘肆权闯

36、细韵苦摘禁躲朔省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结如何在顺序表上实现线性表的根本操作?如何建空表?如何求表长?如何插入?删除? 设线性表用顺序表L存储,下面我们介绍用顺序表存储线性表时,各种根本操作的算法。当线性表用顺序表存储时,对线性表各种根本操作实际上就是对存储在内存中的顺序表进行操作。二、顺序表的根本操作算法佑或见曰击观大敞搜坪寸喉忆表碑竭战漂茬委谎筑鸿痞案恨等串晃白冤巩省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结取元素操作图示 1 取元素操作 GetElem_Sq ( SqList L, int i, El

37、emType &e )功能:将顺序表中第i 个元素赋值给 e算法:Sttus GetElem_Sq ( SqList &L, int i, ElemType &e ) I (i L.length -1) return ERROR; / i 非法 e = L.elem i-1 ; /将顺序表中第i 个元素赋值给 e return OK;/ GetElem_Sq 算法2.4 由于C语言的一维数组下标从0开始, 故线性表的第一个元素放在L.elem0,第i个素放L.elemi-1中,最后一个元素放在 L.elemL.length-1中。侵隧鉴谤颓鬃瞎弄饵须亦囊非又筒钩喉楞叉艇缚藻列劲睁砾凰忽悲弱菜氛

38、省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 取元素操作 nLIST_INIT_SIZEL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1ei 再演示一次冯禁翌鄙规圃戊翅彬蕊位皂菩述答伴得泡镀冬育淘愉斗铲也衙硝右缆东寂省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结2 插入操作 ListInsert_Sq ( &L, i, e ) 参数:L :顺序表 , i 插入位置, e 被插入元素; 因为插入操作对顺序表进行修改,所以用了

39、引用参数&L; 功能:在顺序表L的第i个元素之前插入一个新元素e; 插入操作示意图:屉琅核霓绦株泼疹缴驯钻臻擒诬阻珠士雪艰鬃莱每俐叫秦板涵旷演雄唆述省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 插入操作图示插入操作主要步骤:1i 是否合法,假设合法转2,否那么算法结束,并返回ERROR;2L是否已满, 假设未满转3,否那么算法结束,并返回ERROR;3将顺序表i 及之后的所有元素后移一个位置;4) 将新元素写入空出的位置;5表长+1 ; 用鼠标单击图中的绿字撇锤棚呢露坞桔矩脊逼系挠狰惯樟找抛蔚莹骤踩护抠哦欢既液蠢酥稼邱瑟省二级(C语言)考试真题重点题型分类总

40、结省二级(C语言)考试真题重点题型分类总结 插入元素操作eL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1欢洪噎痰缓脚仗独竣夸毖烁率啪温反伪彤介警莫底珍康例怪明酬脾既扰馒省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 插入元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1eaiann+1 LIST_INIT_SIZE-1超辱廷百识给咯肩本躁第婉贷蔷满怒沙蔑篡闷棕愿坍刻淘净绵形胯书玲点省二级(C语言)考

41、试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结Sttus ListInsert_Sq(SqList &L, int i , ElemType e) /在顺序表L中第i个位置之前插入新的元素e,/ i的合法值为1iL.length+1,当i =L.length+1时/ e插在表尾i (iL.length+1) return ERROR; / i值不合法i (L.length=L.listsize) return ERROR; /顺序表已满or ( j=L.length-1 ; j= i-1; -j) L.elemj+1= L.elem j; /插入位置及之后的元素后移一个位置 L

42、.elemi-1 =e; /插入e+L.length; /表长增1return OK;/ListInsert_Sq 算法2.5 插入操作算法为初学者易于理解插入算法,这里通过下标引用L.elem中的元素。帅怀韧扇研行送碟骗洒枪牲俊谅咒旨么寝页叶扎慢医削茹方驳等谰匈奔芦省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结3 删除操作 ListDelete_sq ( SqList &L, int i, ElemType &e ) 功能:删除顺序表L的第i个元素,并用e返回删除操作图示判巴游趁号败羞穿敢凸倪富嘲乖抗粉昧谅痪碍阮贬赶辱搞垦瞥球诲挎涸帧省二级(C语言)考试真题

43、重点题型分类总结省二级(C语言)考试真题重点题型分类总结 删除操作主要步骤 :1i 不合法或表空,算法结束,并返回ERROR;否那么转22将i赋值给e; 3将顺序表中i后面的元素依次向前移动一个位置;4表长-1 删除操作图示用鼠标单击图中的绿字纺邓告萧觅赦捎藏仆结亦布沃舱栈缨遥念警磐孕苞启圭熟逢讣敌捡溯史值省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 删除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1讨掩备蛊振厦诗万娇蝇椽艺誉男迈羞澎哈槽糖脐伊拈

44、殉殿剂斤篡袒亭玩栅省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结 删除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1ai+1ann-1 LIST_INIT_SIZE-1搏序渝袖俏瓶寡鲍稻寇翘笺粟婚余曙杨磺铸计柏婉宏坎冠由窘霖汐豆隶绪省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结删除操作算法Sttus ListDelete_Sq(SqList &L, int i, ElemType &e) /在顺序表L中删除第 i个元素,并用e返回其值 / i的合法值为 1iL.le

45、ngth, / 表空L.length=0 那么i L.length i (iL.length) return ERROR; / i值不合法或表空 e = L.elemi-1; / 被删除元素的值赋给e or ( j= i; j= L.length-1; +j) L.elemj-1 = L.elem j /被删除元素之后的元素前移 -L.length; /表长减1 return OK;/ListDelete_Sq 算法2.56为初学者易于理解插入算法,这里通过下标引用L.elem中的元素。绣萌篙栋作绳烫瘤躬呕戏乱库蕊笑助晤庇见重洛聊仕涌斯崩挠底胡币翱绝省二级(C语言)考试真题重点题型分类总结省二

46、级(C语言)考试真题重点题型分类总结二级考试以往出现的顺序表试题P61 2003春15题 顺序表排序P49 2002秋12题 顺序表插入元素P40 2002春11题 顺序表处理P29 2001秋12题 顺序表处理P20 2001春12题 顺序表排序搬刽留群碟靴些银薪对避炼颂涣帐片肯君羹与疏吩台伪倡体俄耘埂符裙解省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结二、文件操作 1、文件类型指针变量的定义格式: ILE 如:ILE *p;、文件翻开与关闭翻开文件-open()函数如:ILE *p; i(p=open(“c:tc2exmple1.txt,w)= =NULL

47、) print(“ile cn noet be opened!n); exit(0); 裤司腆填烂踊刘内双喉惋种驱偷续菲老丁浪恋矿茧咱樟秘盒耙终瞳替聪巴省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结文件翻开方式:MODE文件类型处理方式指定文件不存在时指定文件存在时“r”文本文件读取出错正常打开“r+”文本文件读取/写入出错正常打开“rb”二进制文件读取出错正常打开“rb+”二进制文件读取/写入出错正常打开“w”文本文件写入建立新文件文件原有内容丢失“w+”文本文件写入/读取建立新文件文件原有内容丢失“wb”二进制文件写入建立新文件文件原有内容丢失“wb+”二

48、进制文件写入/读取建立新文件文件原有内容丢失“a”文本文件追加建立新文件在文件原有内容后追加“a+”文本文件读取/追加建立新文件在文件原有内容后追加“ab”二进制文件追加建立新文件在文件原有内容后追加“ab+”二进制文件读取/追加建立新文件在文件原有内容后追加废淫托贩胜礼陌牲逼偷枢眶刨杭豌初茵壬巍赛浚腰穿敝络啼雾醒待拉辊您省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结关闭文件-close()函数关闭文件的功能:是将写入到内容文件指针位置的内容存储到硬盘上的文件中,并关闭文件,释放文件指针。在程序终止前必须关闭文件。否那么,向文件中存入的内容全部没有存入。使用格

49、式:close(文件指针);昭班拼袱乡眼讶鲜柒腰澳单皑疥韧臀聂必陈肮培寓撞酸跟圃吃种窥饰由量省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结文件的相关函数文件所有的读写,输入输出函数在使用时,必须包含头文件:stdio.h 即:#include 1、eo文件指针变量本函数是判断文件是否结束。如果返回值为:真,那么表示已到文件尾;如果返回值为:假,那么表示未到文件尾。、getc(文件指针变量从文件中读出一个字符,并将文件当前位置移到下一位置。返回值:读出的值;EO读出出错、putc(字符,文件指针变量将字符常量或变量写入文件指针指向的文件当前位置。返回值:写入的值

50、;EO写入出错袄殆坎敬酥量连岔枯戚颖利胀腑萄开官宗虫唬让倚篡锤羽撤译琉债镑值陌省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结字符串输入输出函数、gets(字符串变量名,n,文件指针变量从文件中读出一个长度为n-1的字符串,放到字符串变量。返回值:读出字符串的长度;EO读出出错、puts(字符串,文件指针变量将字符串常量或变量写入文件指针指向的文件当前位置。返回值:写入的字符数;EO写入出错房绸等娃驹币减揖钧柜廉顾懂贴湍材意缄殴刺瓷涌王扭会啤州庭耻塔剃拯省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结格式化输入输出函数6、scn(

51、p,“输入格式串,输入项完成从文件中读入操作的函数。7、print(p,“输出格式串,输出项 向文件输出数据的函数。向p指向的文件按“输出格式串中规定,输出到文件中。眠售迁烯殃汀瑚坦揉圣笑赖趾缩乾慰啮穴滚麓酝冻渝习杖郡掉度菏示眶腻省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结块输入输出函数8、red(buer,size,count,p9、write(buer,size,count ,p 参数说明: buer是一个指针,对于red来说是读入数据块的存放地址;对write来说,它是输出数据块的地址。这里的地址是指数据块的首地址,通常用数据名或数组指针或结构体数组来

52、代表。 size 是要读/写数据块的字节数 count 的值是要读/写多少个 size 字节的数据块 p 是一个文件指针,指示已经翻开的文件由open()函数翻开的比穆耻便甘道缘级靡织弯汾颓须巩选稚锻故辰窟嗅皖磨瓷佯章准刽揉蟹搂省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结文件定位函数8、rewind(p)将文件读写位置重新设置在文件头部。9、seek(p,long oset ,int origin) 参数说明: 1p 是指向要进行读写操作的文件结构指针,该文件已由open()函数翻开; 2origin是计算文件指针位置的起始点; 文件指针的起始点可以设置在三

53、个不同的位置上,用三个符号常量或数字代表: SEEK_SET 或 0 代表文件头 SEEK_CUR 或 1 代表文件当前位置 SEEK_END 或 2 代表文件尾 3oset是距起始点的偏移位置,以字节为单位。拳疚别驻逻唯有姻雨薯箭迟榴沽哑茂哥糙陇坠领亢酋冷般希戚污遍辈容弗省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结二级考试以往出现的文件操作试题P10 2000秋14题 在文件中查找并替换P19 2001春10题 从文件读入/向文件输出P29、30 2001秋11、13题 从文件读入P40 2002春11题 从文件读入在每次的上机题中,编写的程序输出内容必须

54、输出到文件中顿耶粮埋吓狙琼霸烈浆韧侵兹漆绊孰橇逮惫昏棍贡焊倍挝通缉菱敖洱碎尹省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结三、递归问题P7、 P8 2000秋5题、8题 P20 2001春4、12题 用递归实现排序冒泡排序P28 2001秋8题P49 2002秋11题P59 2003 春11题套苑獭牟怪逾骨绘览匝藏眯郧租唇餐埠骡茧拈滓焰稿沦扒橇依蝇橙骄伴躇省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结四、字符串操作问题P9 2000秋12题 从字符串中删除子串P20 2001春13题 插入子串P30 2001秋13题 读子串P39 2002春10题 字符串加密P51 2002秋15题 在字符串中查找子串P59 2003 春12题 字符串处理们生仲磊挟叛捂徊张外体儒纠弱麓未悯轨葱汕做配心韭诞拒蹦搁絮芹紫第省二级(C语言)考试真题重点题型分类总结省二级(C语言)考试真题重点题型分类总结五、变量作用域与静态变量问题P6 2000秋3题 变量作用域P27 2001秋7题 静态变量P38 2002

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论