版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C/C+學(xué)習(xí)指南 第13.2講:有頭鏈表的構(gòu)造作者:邵發(fā) 官網(wǎng): 答疑: kbase/引例C/C+學(xué)習(xí)指南 邵發(fā) 一個鏈表,當(dāng)有N個對象串起來是,使用第一個對象來指代整個鏈表。可以向鏈表中添加對象,也可以刪除對象??紤]:如果向鏈表中刪除了所有對象,這個鏈表該怎么表示?(或者說,鏈表中有0個對象)有這個問題引出了兩種形式的表示方法:有頭鏈表、無頭鏈表有頭鏈表與無頭鏈表C/C+學(xué)習(xí)指南 邵發(fā) 無頭鏈表:所有的節(jié)點都包含了有效數(shù)據(jù)。(上節(jié)課演示的鏈表就是無頭鏈表)有頭鏈表:用一個固定的頭節(jié)點來指代整個鏈表,所有的對象掛在這個頭節(jié)點下面,而頭節(jié)點本身不包含有效數(shù)據(jù)。有頭鏈表C/C+學(xué)習(xí)指南 邵發(fā) 有頭
2、鏈表:使用固定的鏈表頭。(很容易表示對象個數(shù)為0的情形)有頭鏈表C/C+學(xué)習(xí)指南 邵發(fā) 使用固定的頭節(jié)點,是為了簡化鏈表操作。本篇介紹這種有頭鏈表的使用。無頭鏈表的缺點:沒有固定的頭節(jié)點,所有的節(jié)點都是數(shù)據(jù)節(jié)點。因此,當(dāng)鏈表對象個數(shù)為0時,不好表示 。(1) 定義一個有頭鏈表C/C+學(xué)習(xí)指南 邵發(fā) 只需要定義一個對象作為其節(jié)點,將成員next初始化為NULL。Student m_head = 0, head, NULL;或?qū)懽鱏tudent m_head = 0;當(dāng)有對象加入時,直接加在它的后面就可以。當(dāng)它的next為NULL時,表示該鏈表一個對象也沒有。(也就是說,頭節(jié)點自身只用于掛接,本身
3、是不算作長度的)(2) 添加一個對象C/C+學(xué)習(xí)指南 邵發(fā) void add(Student* obj) obj-next = m_head.next; m_head.next = obj-next;鏈表中的對象,一般都動態(tài)創(chuàng)建的。比如,當(dāng)用戶需要添加一個對象時,從控制臺輸入信息,然后創(chuàng)建一個對象,插入到鏈表中。(2) 添加一個對象C/C+學(xué)習(xí)指南 邵發(fā) 比如,原鏈表中有4個對象A,B,C,D,調(diào)用add函數(shù),添加一個對象X(2) 添加一個對象C/C+學(xué)習(xí)指南 邵發(fā) 也可以把對象附加到末尾void add(Student* obj) Student* p = &m_head; while(p-
4、next) p = p-next; / 找到最后一個對象 p-next = obj; / 把obj掛在最后一個對象后面 obj-next = NULL; / 現(xiàn)在obj作為最后一個對象(3) 對象從哪來?C/C+學(xué)習(xí)指南 邵發(fā) 鏈表中的對象,一般都動態(tài)創(chuàng)建的。(注意:動態(tài)創(chuàng)建的對象的生命期,自malloc之時生效,到free之后失效)Student* obj = (Student*)malloc (sizeof(Student);obj-id = 12;strcpy(obj-name, X);add(obj);(3) 對象從哪來?C/C+學(xué)習(xí)指南 邵發(fā) 對象的數(shù)據(jù)可以讓用戶來輸入/ 用戶輸入數(shù)
5、據(jù)/ 返回值:0個成功;-1表示用戶輸入有誤int user_input(Student* obj)printf(學(xué)號: );scanf(%d, &obj-id);printf(姓名: );scanf(%s, obj-name);return 0;(4) 有頭鏈表的遍歷C/C+學(xué)習(xí)指南 邵發(fā) 注意:在遍歷有頭鏈表時,不包含頭節(jié)點本身/ 遍歷void show_all()Student* p = m_head.next; while(p)printf(ID: %d, name: %sn, p-id, p-name);p = p-next; / 下一個對象小結(jié)C/C+學(xué)習(xí)指南 邵發(fā) 1. 比較了有頭節(jié)點和無頭節(jié)點(無頭節(jié)點:當(dāng)對象個數(shù)為0時,不太好表示)2. 有頭節(jié)點的構(gòu)造方法,動態(tài)創(chuàng)建對象,并加入到鏈表中。習(xí)題C/C+學(xué)習(xí)指南 邵發(fā)
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)學(xué)專家知識保護協(xié)議
- 2025年農(nóng)村廢棄民房購買合同
- 2025年分期付款購買裝修家具協(xié)議
- 2025年代理商業(yè)務(wù)保密協(xié)議
- 2025年奢侈品銷售代理合作合同
- 2025年室內(nèi)裝飾施工驗收設(shè)計協(xié)議
- 2025年度定制化母嬰護理月嫂服務(wù)合同4篇
- 高空設(shè)施安裝與拆除作業(yè)安全協(xié)議書3篇
- 2025版大學(xué)食堂冷鏈食材配送服務(wù)合同模板3篇
- 2025版土地證抵押個人借款合同示范文本3篇
- 2025屆高考英語 716個閱讀理解高頻詞清單
- 報建協(xié)議書模板
- 汽車配件購銷合同范文
- 貴州省2024年中考英語真題(含答案)
- 施工項目平移合同范本
- (高清版)JTGT 3360-01-2018 公路橋梁抗風(fēng)設(shè)計規(guī)范
- 胰島素注射的護理
- 云南省普通高中學(xué)生綜合素質(zhì)評價-基本素質(zhì)評價表
- 2024年消防產(chǎn)品項目營銷策劃方案
- 聞道課件播放器
- 五星級酒店收入測算f
評論
0/150
提交評論