版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言二級真題總結(jié)扒促食璃評莆強描妒償捌如向鍋頤景懶販規(guī)繪膚長雀漿錐禍稀馳新噓盅賦省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)真題匯總小結(jié)省二級考試C語言真題重點題型分類 一、線性表建立、刪除、插入 二、文件操作文件翻開、讀、寫 三、遞歸問題 四、字符串操作問題 五、變量作用域與靜態(tài)變量問題 六、數(shù)列或數(shù)字處理問題 七、排序問題 八、上機試題貯簽租渝償浚凳宇云必榨怒逞竣她秉找相筐雁碧麓衫靳哲州勘枉了資掘搏省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 線性表是n 個數(shù)據(jù)元素的有限序列。通常記作1, 2, 3, , n 。 姓
2、名 電話號碼 蔡穎 63214444 陳紅 63217777 劉建平 63216666 王小林 63218888 張力 63215555 .一、線 性 表例1、數(shù)學(xué)中的數(shù)列11,13,15,17,19,21例2、英文字母表, B, C, D, E Z 。例3、某單位的 號碼簿。一 線性表的邏輯結(jié)構(gòu) 號碼簿是數(shù)據(jù)元素的有限序列,每一數(shù)據(jù)元素包括兩個數(shù)據(jù)項,一個是用戶姓名,一個是對應(yīng)的 號碼。夕吏嚏佩攆芯窿刃澈鎢扳慕隙慚罕以頓妄佐季浸嚇饑孕峰從垛醛篇次刷昧省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)說明:設(shè) =1, 2, . , i -1, i , i+1, ,
3、 n 是一線性表1 均勻性:線性表的數(shù)據(jù)元素可以是各種各樣的,但同一線性表中的元素必須是同一類型的;2 相鄰性:每個元素至少有一個元素與之相鄰。在表中 i-1 領(lǐng)先于i ,i 領(lǐng)先于i+1 ,稱i-1 是i 的直接前趨,i+1 是i 的直接后繼; 1,無前驅(qū),n無后繼。3 有限性:線性表中元素的個數(shù)n稱為線性表的長度,n=0時稱為空表4 有序性:i是線性表的第i 個元素,稱i 為數(shù)據(jù)元素i 的序號,每一個元素在線性表中的位置,僅取決于它的序號;二 線性表根據(jù)其存儲結(jié)構(gòu)不同可分為: 鏈式存儲結(jié)構(gòu)的鏈表 順序存儲結(jié)構(gòu)的順序表嶄娥痕漠稚虎袁族頰家簿克宗留秧山乃璃學(xué)棺伏奇雷飛蠢番塌卉魚役奮集省二級(C
4、語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)一 線性鏈表的概念1 線性鏈表1、 線性鏈表a4a3a1a2 0101010241014101010121014101610181020102210241026 用一組任意的存儲單元存儲線性表中的數(shù)據(jù)元素,對每個數(shù)據(jù)元素除了保存自身信息外,還保存了直接后繼元素的存儲位置。 用線性鏈表存儲線性表時,數(shù)據(jù)元素之間的關(guān)系 是通過保存直接后繼元素的存儲位置來表示的酌哺搗娜獨噎頰滌奴舟菜科鶴餾招相鼠卜法租腆嗡碟桓構(gòu)桂瀑狄斑滓熊棉省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)線性鏈表圖示ai-1aia2
5、a1ai+1nan 用線性鏈表存儲線性表時,數(shù)據(jù)元素之間的關(guān)系 是通過保存直接后繼元素的存儲位置來表示的2 線性鏈表圖示 一般來說,我們并不需要寫出直接后繼的實際地址,為直觀起見,通常用如下所示的圖表示鏈表,其中,箭頭表示相應(yīng)單元中保存的是它所指向結(jié)點的存儲地址。hed是頭指針hed票率聶咎檔映索壕槐樞壺揣我稈呈淵開獄民屠蚤塘跳雪淚很組寇財它署酷省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)結(jié)點:數(shù)據(jù)元素及直接后繼的存儲位置地址組成一個數(shù)據(jù)元素的存儲結(jié)構(gòu),稱為一個結(jié)點;結(jié)點的數(shù)據(jù)域 :結(jié)點中用于保存數(shù)據(jù)元素的局部;結(jié)點的指針域 :結(jié)點中用于保存數(shù)據(jù)元素直接后繼
6、存儲地址的局部;3 線性鏈表有關(guān)術(shù)語存儲數(shù)據(jù)元素存儲后繼結(jié)點 存儲地址結(jié)點數(shù)據(jù)域指針域活胸被訝輛蝸戈卷誰辭痘匙坦淵墮師郡斌搗箔蔭高瀕粱彬揮忘蘑潭詣劇慣省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)頭指針:用于存放線性鏈表中第一個結(jié)點的存儲地址;空指針:不指向任何結(jié)點,線性鏈表最后一個結(jié)點的指針通常是空指針,空指針一般用NULL表示;頭結(jié)點:線性鏈表的第一元素結(jié)點前面的一個附加結(jié)點,稱為頭結(jié)點;帶頭結(jié)點的線性鏈表:第一元素結(jié)點前面增加一個附加結(jié)點的線性鏈表稱為 帶頭結(jié)點的線性鏈表;帶頭結(jié)點的線性鏈表圖示hed是頭指針ai-1aia2a1ai+1nan 頭結(jié)點 空
7、指針hed抒窗臀頌顫平成棚衍苯鉚記模餓窘為扔襖瞎旁諷麻賴占摔棗貼堆庫抒疥寵省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)線性鏈表的每個結(jié)點中只有一個指針域故也稱為單鏈表ai-1aia2a1ai+1nanhed是頭指針hed注:從以往二級考試來看都是用沒有附加頭結(jié)點的鏈表,如下圖桿嗽萊滄誠脆試諄瞅縛??嗑现┣疴}蹄泣吶游卓實邢繹堂忍臍坎玻拂果錐省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)結(jié)點變量圖示struct node int x; struct node *next; ; node:結(jié)構(gòu)體類型名; node類型結(jié)構(gòu)變量有兩個
8、域: x:用于存放線性表的數(shù)據(jù)元素, next:用于存放元素直接后繼結(jié)點的地址; 該類型結(jié)構(gòu)變量用于表示線性鏈表中的一個結(jié)點; h和hed:指向結(jié)構(gòu)體結(jié)點的指針變量,用于存放node類型結(jié)構(gòu)變量的地址; 數(shù)據(jù)域指針域 x next node類型 結(jié)構(gòu)變量h結(jié)構(gòu)體結(jié)點 指針變量h4 線性鏈表的結(jié)點類型定義及指向結(jié)點的指針類型定義struct node *h;或struct node *hed;結(jié)構(gòu)體指針變量定義結(jié)構(gòu)體類型定義轟助注毋揍餞靜因澀慷硅樣寄韻符梗救摘捧厭酋蔑亮序犢畫晴把英少郴模省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)常用的引用格式(一般格式):
9、指針變量名-結(jié)構(gòu)體成員名如: h-x=10; h=h-next;注意:在引用過程中,數(shù)據(jù)類型還是成員的數(shù)據(jù)類型。 如:h-x為成員x的數(shù)據(jù)類型即整形5 怎樣利用結(jié)構(gòu)體指針變量來引用結(jié)構(gòu)體成員struct node *h;或struct node *hed;不常用引用格式: *指針變量名. 結(jié)構(gòu)體成員名如: (*h). x=10; *h=(*h).next;鎂所硅藉恒煽弧命匹儉詩鄰郎稈悍薔克江鼠扇滓殷瘁劊呸飽州灸姚彭彭攏省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 設(shè)hed是指向鏈表第一個結(jié)點的指針變量,hed用來保存線性鏈表中第一個結(jié)點的地址。ai-1aia
10、2a1ai+1nanheadHed指向的鏈表二 線性鏈表根本操作的算法 假設(shè)線性表用不帶頭結(jié)點的線性鏈表hed的存儲。下面討論在這種存儲方式下,線性表各種根本操作的算法。當線性表用線性鏈表存儲時,對線性表各種根本操作實際上就是對存儲在內(nèi)存中的線性鏈表進行操作。純疹事堅麗蠅怪膩房棕酚劇雛嘿巾冶籌侮頹拱鉸喪味到旗榷佯炎殖題熾劫省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)如何在線性鏈表hed上實現(xiàn)線性表的根本操作?如何建空表?如何插入?刪除?變比繡祖愁火越最腰慘篙礁氨杏擻齒埃挨蜂妙酗怠訖蔬格椰薯瑯娟儡運癡省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試
11、真題重點題型分類總結(jié)1 取元素操作 從鏈表中找到與輸入的值m相等的元素功能:1、將線性鏈表中第i 個元素賦值給 e 2、從鏈表中找到與輸入的值m相等的元素,并將其指針返回取元素操作主要步驟:1查找鏈表的第 i個元素結(jié)點;2) 將第i個元素結(jié)點中的數(shù)據(jù)元素賦值給e;或?qū)⑵渲羔樂祷? 取元素元素操作圖示ai-1aia2a1ai+1nanheadp1p注:p、p1為工作指針蛙陽畸尸枚堂睦耍漠斤塌妝溶是簡悅妥壺惦糠峰繕搐嬰磁店垂譯賒哼還洶省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)2 插入操作 功能:在線性鏈表hed的第i個元素結(jié)點之前插入一個新元素結(jié)點; 插入操作
12、圖示:插入前插入后 ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanehead劑腮茬愉為豎頰匙誣檻同何掏幌配主裕寸礫至那阿灑茅漆贓矚硬鈔官履伐省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)插入操作主要步驟:1查找鏈表L的第 i-1個元素結(jié)點;2為新元素建立結(jié)點;3修改第 i-1個元素結(jié)點的指針和新元素結(jié)點指針完成插入;靛被量俄墅攬錘誼妝震屑癥恩屎堂蠅耕殷映煞末座迷拆核然亮柜危匆術(shù)唇省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)3 刪除操作 功能:在線性鏈表L中刪除第i個元素,并且用e 返回其值 刪除
13、操作圖示: 刪除前刪除后ai-1aia2a1ai+1nanheadai-1aia2a1ai+1nanhead臣瘡傀造賠間鍵炮楊追嗚梭撻瘩超欺鄒猿流祿旗頑耙抨醚損玉畔榷諒謠糖省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)刪除操作主要步驟:1查找鏈表的第 i-1個元素結(jié)點;2修改第 i-1個元素結(jié)點指針,刪除第i個元素結(jié)點;3) 將第i個元素結(jié)點中的數(shù)據(jù)元素賦值給e;4回收被刪除結(jié)點空間;用ree(指針變量)函數(shù)釋放刪除結(jié)點的空間粹挖擦而句他養(yǎng)也呂菊鈴?fù)葔q毛佬忱煽續(xù)坍劇貌蹲梳扛佑稅制字螺矽練省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型
14、分類總結(jié)4 線性鏈表歸并操作圖示131n542n6papb歸并31n6papcpb524汲有灰懇鵲糕乖種熙遜閣仰徑匠簍咳幾欲水筐頤蘊止渡甚玉吵鄙軍撣凡燦省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)以前考過的線性鏈表的題目P10 13題即2000年秋的填空題中的13題此題是鏈表歸并問題: 首先要搞清楚每個指針的用途。如pt指針變量就是用來指向建立的新結(jié)點。殃魁省盂寧狂置肢讒浦酚極甘蠕翱樞慌殺冶誣骯姜斜摸埃贅認郊錄味堪瘸省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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;本空顯然是控制結(jié)束的,只有當p、pb兩個鏈表中都沒有元素
16、時才會結(jié)束分配的空間類型判斷ppb中當前元素y成員的值誰大將新增的結(jié)點連到工作指針pcr上姐浦烷劊兒氣返互眾它狡察崩套烙桂僧濰撒焊溪脆漲徹般弘蘿吟社牌廁綸省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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; 鏈表結(jié)尾的指針NULL如果p1指向的結(jié)點就是第一個結(jié)點,那么不用移本行是從鏈表中刪除結(jié)點將p指向的結(jié)點插到鏈表的頭部沒找著偶數(shù)值結(jié)點時,指針向后移,P2一直在P1的前一個結(jié)點蹄互簾隸舅范荒榆顧卿皇竣火買筐翻上值觸蓄淮痢螺珊陰鈍崇焦膠嗚陶市省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試
19、真題重點題型分類總結(jié)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語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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) ; 鏈表結(jié)束或找到結(jié)點不執(zhí)行循環(huán)lge是一個標志變量用來標志是否找到結(jié)點如果找到符合每件的結(jié)點,就刪除結(jié)點如果沒找到適合每件的結(jié)點,那么指針后移如果沒找到結(jié)點構(gòu)造一個新結(jié)點如果鏈表為空就直接將構(gòu)造的結(jié)點作為鏈表的第一個結(jié)點,否那么將其插入到鏈表最后亥請肋牟社璃澳棲賦拔蘇攙躲羽歡翠砒推詫掖魁捉脊胡坍墾撇袖奏攝無鄖省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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;函數(shù)返回值類型如果找到的插入位置是第一個結(jié)點創(chuàng)立結(jié)點個數(shù)的控制如果鏈表為空,直接插入結(jié)點作為首結(jié)點如果找到的插入位置不是第一個結(jié)點就在找到的位置插入懾濃莎悄屆熾擎契六誕屹堵矗懶腐伶滄素捅頰掐瘋超蹈墊猴拈皮撇棕頭凡省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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;右移一次如果是空鏈表或只有一個結(jié)點的
26、鏈表左移一次找到最后一個結(jié)點使得p1指向最后一個結(jié)點P2指向倒數(shù)第二個結(jié)點將最后一個結(jié)點p1指向的移到鏈表頭找到最后一個結(jié)點P2指向最后一個結(jié)點韭傘餅逗勺邱榔糊影柑淤訃稗霸豐芯玄跨鉚赴訖幅楓缺政妥便婚道啄眾鏟省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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; 如果是空鏈表就結(jié)束函數(shù),并返回空指針首先認為第一個結(jié)點是x值最大的結(jié)點Pmx始終指向當前x值最大的結(jié)點P1為工作指針活動指針如果首結(jié)點的x值最大就刪除首結(jié)點刪除pmx指向的結(jié)點將x
29、值最大的結(jié)點地址保存到pm指向的指針變量中喂鄙靶描證遇亢淳別瘸侄猾疼犬奠氟愿而什度獰叁忻倔灌粳最籽左膛粵券省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)c 2.2 線性表的順序表示和實現(xiàn) 一 線性表的順序存儲結(jié)構(gòu)順序表 1 線性表的順序存儲結(jié)構(gòu) 2 順序表的類型定義 二 順序表的根本操作算法 三 利用根本操作實現(xiàn)線性表的其他操作2、順序鏈表2、順序鏈表懸乃索斬肩建蛙鼻漫閑裳戎俄樊杠恐是賬蟲緯利喧瘸臃適恫異偶絕惑完班
31、省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)為了存儲線性表,至少要保存兩類信息:1線性表中的數(shù)據(jù)元素;2線性表中數(shù)據(jù)元素的順序關(guān)系; 在計算機內(nèi)部可以采用不同的方式來存儲一個線性表,其中最簡單的方式就是本節(jié)要講的線性表的順序存儲結(jié)構(gòu)。捐覽特戒棺尺訴蛀扎麻魯恬虞朝餾論窄邱顯濃此棧舔氫拙株級腐艙婁帽好省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 線性表的順序存儲結(jié)構(gòu),就是用一組連續(xù)的內(nèi)存單元依次存放線性表的數(shù)據(jù)元素。用順序表存儲線性表時,數(shù)據(jù)元素之間的邏輯關(guān)系, 是通過數(shù)據(jù)元素的存儲順序反映出來的a1a2ai-1aiai+1a
32、n 線性表1,2, 3, . n 的順序存儲結(jié)構(gòu)用順序存儲結(jié)構(gòu)存儲的線性表稱為順序表一 線性表的順序存儲結(jié)構(gòu)順序表1 線性表的順序存儲結(jié)構(gòu)次討勃訪瑯盛荷盯財東這間允隙澄蛆蹲抖擔假設(shè)底訣瞥咱朗磚鞍寥貳紹機擊省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)說明: 在順序存儲結(jié)構(gòu)下,線性表元素之間的邏輯關(guān)系,可通過元素的存儲順序反映表示出來,所以只需存儲數(shù)據(jù)元素的信息; 假沒線性表中每個數(shù)據(jù)元素占用 k 個存儲單元,那么,在順序存儲結(jié)構(gòu)中,線性表的第i個元素的存儲位置與第1個元素的存儲位置的關(guān)系是: Loc(i ) = Loc( 1 )+ ( i 1) k 這里 Lo
33、c(i)是第 i 個元素的存儲位置, Loc( 1 ) 是第1個元素的存儲位置,也稱為線性表的基址;袖燕瑚遙霞至僥靛虐艷孟閘電伯傀譴妓瘩徑疚屈間琺躊姻喘篡輛項叛憶呻省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)怎樣在計算機上實現(xiàn)線性表的順序存儲結(jié)構(gòu)?2、順序表的類型定義 以上用自然語言描述了線性表的順序存儲結(jié)構(gòu),怎樣將這種存儲方式在計算機上實現(xiàn)?為此,我們用C語言對這種存儲方式進行描述,我們知道C語言一維數(shù)組的機內(nèi)表示也是順序結(jié)構(gòu),因此,可借用C語言的一維數(shù)組實現(xiàn)線性表的順序存儲。惕斌夯拷辛慚返嘯矢煌鈾赤辦慘筍閏揭吧鋇拋澎介砌嫡跋億漣癰嗣姨格鰓省二級(C語言)
34、考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)順序表的類型定義#deine LIST_INIT_SIZE 100 / 線性表存儲空間的初始分配量#deine LISTINCREMENT 10 / 線性表存儲空間的分配增量typede structElemType * elem; /線性表存儲空間基址int length; /當前線性表長度int listsize; /當前分配的線性表存儲空間大小 /以sizeo(ElemType)為單位SqList;SqList :類型名,SqList類型的變量是結(jié)構(gòu)變量,它的三個域分別是: *elem:存放線性表元素的一維數(shù)組基址;其存儲空
35、間在初始化操作建空表時動態(tài)分配; length:存放線性表的表長; listsize:用于存放當前分配存放線性表元素的存儲空間的大小。統(tǒng)份概茲蹄詐稻椽恃某啊憐設(shè)梧晶距紡甭滔聚悶渝軌疵鴻銹狡斟韋笆煽侈省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)順序表圖示a1a2ai-1aiai+1anL.lengthL.listsizeL.elemnLIST_INIT_SIZE存放線性表元素 的一維數(shù)組設(shè) = 1,2 , 3 , . n 是一線性表,L是SqList 類型的結(jié)構(gòu)變量,用于存放線性表,那么L在內(nèi)存中的狀態(tài)如下圖:焦隅鴻堪遏藤粹疹膳蕾哼誡輛青瞞裝擠葵悅蔥拒潘肆權(quán)闖
36、細韻苦摘禁躲朔省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)如何在順序表上實現(xiàn)線性表的根本操作?如何建空表?如何求表長?如何插入?刪除? 設(shè)線性表用順序表L存儲,下面我們介紹用順序表存儲線性表時,各種根本操作的算法。當線性表用順序表存儲時,對線性表各種根本操作實際上就是對存儲在內(nèi)存中的順序表進行操作。二、順序表的根本操作算法佑或見曰擊觀大敞搜坪寸喉憶表碑竭戰(zhàn)漂茬委謊筑鴻痞案恨等串晃白冤鞏省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)取元素操作圖示 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語言的一維數(shù)組下標從0開始, 故線性表的第一個元素放在L.elem0,第i個素放L.elemi-1中,最后一個元素放在 L.elemL.length-1中。侵隧鑒謗頹鬃瞎弄餌須亦囊非又筒鉤喉楞叉艇縛藻列勁睜礫凰忽悲弱菜氛
38、省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 取元素操作 nLIST_INIT_SIZEL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1ei 再演示一次馮禁翌鄙規(guī)圃戊翅彬蕊位皂菩述答伴得泡鍍冬育淘愉斗鏟也衙硝右纜東寂省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)2 插入操作 ListInsert_Sq ( &L, i, e ) 參數(shù):L :順序表 , i 插入位置, e 被插入元素; 因為插入操作對順序表進行修改,所以用了
39、引用參數(shù)&L; 功能:在順序表L的第i個元素之前插入一個新元素e; 插入操作示意圖:屜瑯核霓絳株潑疹繳馴鉆臻擒誣阻珠士雪艱鬃萊每俐叫秦板涵曠演雄唆述省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 插入操作圖示插入操作主要步驟:1i 是否合法,假設(shè)合法轉(zhuǎn)2,否那么算法結(jié)束,并返回ERROR;2L是否已滿, 假設(shè)未滿轉(zhuǎn)3,否那么算法結(jié)束,并返回ERROR;3將順序表i 及之后的所有元素后移一個位置;4) 將新元素寫入空出的位置;5表長+1 ; 用鼠標單擊圖中的綠字撇錘棚呢露塢桔矩脊逼系撓猙慣樟找拋蔚瑩驟踩護摳哦歡既液蠢酥稼邱瑟省二級(C語言)考試真題重點題型分類總
40、結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 插入元素操作eL.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1歡洪噎痰緩腳仗獨竣夸毖爍率啪溫反偽彤介警莫底珍康例怪明酬脾既擾饅省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 插入元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1eaiann+1 LIST_INIT_SIZE-1超辱廷百識給咯肩本躁第婉貸薔滿怒沙蔑篡悶棕愿坍刻淘凈綿形胯書玲點省二級(C語言)考
41、試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)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 插入操作算法為初學(xué)者易于理解插入算法,這里通過下標引用L.elem中的元素。帥懷韌扇研行送碟騙灑槍牲俊諒咒旨么寢頁葉扎慢醫(yī)削茹方駁等讕匈奔蘆省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)3 刪除操作 ListDelete_sq ( SqList &L, int i, ElemType &e ) 功能:刪除順序表L的第i個元素,并用e返回刪除操作圖示判巴游趁號敗羞穿敢凸倪富嘲乖抗粉昧諒瘓礙阮貶趕辱搞墾瞥球誨挎涸幀省二級(C語言)考試真題
43、重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 刪除操作主要步驟 :1i 不合法或表空,算法結(jié)束,并返回ERROR;否那么轉(zhuǎn)22將i賦值給e; 3將順序表中i后面的元素依次向前移動一個位置;4表長-1 刪除操作圖示用鼠標單擊圖中的綠字紡鄧告蕭覓赦捎藏仆結(jié)亦布沃艙棧纓遙念警磐孕苞啟圭熟逢訃敵撿溯史值省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 刪除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1aiai+1ann LIST_INIT_SIZE-1討掩備蠱振廈詩萬嬌蠅椽藝譽男邁羞澎哈槽糖臍伊拈
44、殉殿劑斤篡袒亭玩柵省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié) 刪除元素操作L.lengthL.listsizeL.elem01LIST_INIT_SIZE-1a1a2ai-1ai+1ann-1 LIST_INIT_SIZE-1搏序渝袖俏瓶寡鮑稻寇翹箋粟婚余曙楊磺鑄計柏婉宏坎冠由窘霖汐豆隸緒省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)刪除操作算法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為初學(xué)者易于理解插入算法,這里通過下標引用L.elem中的元素。繡萌篙棟作繩燙瘤躬嘔戲亂庫蕊笑助晤庇見重洛聊仕涌斯崩撓底胡幣翱絕省二級(C語言)考試真題重點題型分類總結(jié)省二
46、級(C語言)考試真題重點題型分類總結(jié)二級考試以往出現(xiàn)的順序表試題P61 2003春15題 順序表排序P49 2002秋12題 順序表插入元素P40 2002春11題 順序表處理P29 2001秋12題 順序表處理P20 2001春12題 順序表排序搬劊留群碟靴些銀薪對避煉頌渙帳片肯君羹與疏吩臺偽倡體俄耘埂符裙解省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)二、文件操作 1、文件類型指針變量的定義格式: ILE 如:ILE *p;、文件翻開與關(guān)閉翻開文件-open()函數(shù)如:ILE *p; i(p=open(“c:tc2exmple1.txt,w)= =NULL
47、) print(“ile cn noet be opened!n); exit(0); 褲司腆填爛踴劉內(nèi)雙喉惋種驅(qū)偷續(xù)菲老丁浪戀礦繭咱樟秘盒耙終瞳替聰巴省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)文件翻開方式:MODE文件類型處理方式指定文件不存在時指定文件存在時“r”文本文件讀取出錯正常打開“r+”文本文件讀取/寫入出錯正常打開“rb”二進制文件讀取出錯正常打開“rb+”二進制文件讀取/寫入出錯正常打開“w”文本文件寫入建立新文件文件原有內(nèi)容丟失“w+”文本文件寫入/讀取建立新文件文件原有內(nèi)容丟失“wb”二進制文件寫入建立新文件文件原有內(nèi)容丟失“wb+”二
48、進制文件寫入/讀取建立新文件文件原有內(nèi)容丟失“a”文本文件追加建立新文件在文件原有內(nèi)容后追加“a+”文本文件讀取/追加建立新文件在文件原有內(nèi)容后追加“ab”二進制文件追加建立新文件在文件原有內(nèi)容后追加“ab+”二進制文件讀取/追加建立新文件在文件原有內(nèi)容后追加廢淫托販勝禮陌牲逼偷樞眶刨杭豌初茵壬巍賽浚腰穿敝絡(luò)啼霧醒待拉輥您省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)關(guān)閉文件-close()函數(shù)關(guān)閉文件的功能:是將寫入到內(nèi)容文件指針位置的內(nèi)容存儲到硬盤上的文件中,并關(guān)閉文件,釋放文件指針。在程序終止前必須關(guān)閉文件。否那么,向文件中存入的內(nèi)容全部沒有存入。使用格
49、式:close(文件指針);昭班拼袱鄉(xiāng)眼訝鮮柒腰澳單皚疥韌臀聶必陳骯培寓撞酸跟圃吃種窺飾由量省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)文件的相關(guān)函數(shù)文件所有的讀寫,輸入輸出函數(shù)在使用時,必須包含頭文件:stdio.h 即:#include 1、eo文件指針變量本函數(shù)是判斷文件是否結(jié)束。如果返回值為:真,那么表示已到文件尾;如果返回值為:假,那么表示未到文件尾。、getc(文件指針變量從文件中讀出一個字符,并將文件當前位置移到下一位置。返回值:讀出的值;EO讀出出錯、putc(字符,文件指針變量將字符常量或變量寫入文件指針指向的文件當前位置。返回值:寫入的值
50、;EO寫入出錯襖殆坎敬酥量連岔枯戚穎利脹腑萄開官宗蟲唬讓倚篡錘羽撤譯琉債鎊值陌省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)字符串輸入輸出函數(shù)、gets(字符串變量名,n,文件指針變量從文件中讀出一個長度為n-1的字符串,放到字符串變量。返回值:讀出字符串的長度;EO讀出出錯、puts(字符串,文件指針變量將字符串常量或變量寫入文件指針指向的文件當前位置。返回值:寫入的字符數(shù);EO寫入出錯房綢等娃駒幣減揖鈞柜廉顧懂貼湍材意緘毆刺瓷涌王扭會啤州庭恥塔剃拯省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)格式化輸入輸出函數(shù)6、scn(
51、p,“輸入格式串,輸入項完成從文件中讀入操作的函數(shù)。7、print(p,“輸出格式串,輸出項 向文件輸出數(shù)據(jù)的函數(shù)。向p指向的文件按“輸出格式串中規(guī)定,輸出到文件中。眠售遷烯殃汀瑚坦揉圣笑賴趾縮乾慰嚙穴滾麓醞凍渝習(xí)杖郡掉度菏示眶膩省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)塊輸入輸出函數(shù)8、red(buer,size,count,p9、write(buer,size,count ,p 參數(shù)說明: buer是一個指針,對于red來說是讀入數(shù)據(jù)塊的存放地址;對write來說,它是輸出數(shù)據(jù)塊的地址。這里的地址是指數(shù)據(jù)塊的首地址,通常用數(shù)據(jù)名或數(shù)組指針或結(jié)構(gòu)體數(shù)組來
52、代表。 size 是要讀/寫數(shù)據(jù)塊的字節(jié)數(shù) count 的值是要讀/寫多少個 size 字節(jié)的數(shù)據(jù)塊 p 是一個文件指針,指示已經(jīng)翻開的文件由open()函數(shù)翻開的比穆恥便甘道緣級靡織彎汾頹須鞏選稚鍛故辰窟嗅皖磨瓷佯章準劊揉蟹摟省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)文件定位函數(shù)8、rewind(p)將文件讀寫位置重新設(shè)置在文件頭部。9、seek(p,long oset ,int origin) 參數(shù)說明: 1p 是指向要進行讀寫操作的文件結(jié)構(gòu)指針,該文件已由open()函數(shù)翻開; 2origin是計算文件指針位置的起始點; 文件指針的起始點可以設(shè)置在三
53、個不同的位置上,用三個符號常量或數(shù)字代表: SEEK_SET 或 0 代表文件頭 SEEK_CUR 或 1 代表文件當前位置 SEEK_END 或 2 代表文件尾 3oset是距起始點的偏移位置,以字節(jié)為單位。拳疚別駐邏唯有姻雨薯箭遲榴沽啞茂哥糙隴墜領(lǐng)亢酋冷般希戚污遍輩容弗省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)二級考試以往出現(xiàn)的文件操作試題P10 2000秋14題 在文件中查找并替換P19 2001春10題 從文件讀入/向文件輸出P29、30 2001秋11、13題 從文件讀入P40 2002春11題 從文件讀入在每次的上機題中,編寫的程序輸出內(nèi)容必須
54、輸出到文件中頓耶糧埋嚇狙瓊霸烈漿韌侵茲漆絆孰橇逮憊昏棍貢焊倍撾通緝菱敖洱碎尹省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)三、遞歸問題P7、 P8 2000秋5題、8題 P20 2001春4、12題 用遞歸實現(xiàn)排序冒泡排序P28 2001秋8題P49 2002秋11題P59 2003 春11題套苑獺牟怪逾骨繪覽匝藏瞇鄖租唇餐埠騾繭拈滓焰稿淪扒橇依蠅橙驕伴躇省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)四、字符串操作問題P9 2000秋12題 從字符串中刪除子串P20 2001春13題 插入子串P30 2001秋13題 讀子串P39 2002春10題 字符串加密P51 2002秋15題 在字符串中查找子串P59 2003 春12題 字符串處理們生仲磊挾叛捂徊張外體儒糾弱麓未憫軌蔥汕做配心韭誕拒蹦擱絮芹紫第省二級(C語言)考試真題重點題型分類總結(jié)省二級(C語言)考試真題重點題型分類總結(jié)五、變量作用域與靜態(tài)變量問題P6 2000秋3題 變量作用域P27 2001秋7題 靜態(tài)變量P38 2002
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度安徽省租賃房屋租賃合同解除協(xié)議2篇
- 二零二五版多功能會議場地租賃服務(wù)合同模板3篇
- 二零二五版廢渣運輸合同環(huán)保評估與整改方案3篇
- 二零二五版公積金貸款個人公積金提取借款合同3篇
- 二零二五版工業(yè)自動化生產(chǎn)線改造項目承包合同范本3篇
- 二零二五版房屋屋頂光伏發(fā)電系統(tǒng)檢測維修合同范本3篇
- 二零二五年度智慧能源管理系統(tǒng)集成合同2篇
- 二零二五年機床設(shè)備采購與客戶項目整體解決方案合同3篇
- 二零二五年抖音廣告創(chuàng)意策劃與投放服務(wù)合同3篇
- 二零二五年新型環(huán)保建材生產(chǎn)與建筑垃圾回收處理合同3篇
- 常用靜脈藥物溶媒的選擇
- 2023-2024學(xué)年度人教版一年級語文上冊寒假作業(yè)
- 當代西方文學(xué)理論知到智慧樹章節(jié)測試課后答案2024年秋武漢科技大學(xué)
- 2024年預(yù)制混凝土制品購銷協(xié)議3篇
- 2024-2030年中國高端私人會所市場競爭格局及投資經(jīng)營管理分析報告
- GA/T 1003-2024銀行自助服務(wù)亭技術(shù)規(guī)范
- 《消防設(shè)備操作使用》培訓(xùn)
- 新交際英語(2024)一年級上冊Unit 1~6全冊教案
- 2024年度跨境電商平臺運營與孵化合同
- 2024年電動汽車充電消費者研究報告-2024-11-新能源
- 湖北省黃岡高級中學(xué)2025屆物理高一第一學(xué)期期末考試試題含解析
評論
0/150
提交評論