鏈表課件講解_第1頁
鏈表課件講解_第2頁
鏈表課件講解_第3頁
鏈表課件講解_第4頁
鏈表課件講解_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第8章結構體與共用體學習目標掌握結構體類型的基本概念、結構體類型變量的定義及簡單應用?;菊莆战Y構體類型變量參與函數(shù)調用的方法。了解鏈表,動態(tài)存儲空間的申請與釋放了解共用體的概念主要內容鏈表8.2鏈表一.動態(tài)存儲管理C語言提供了一些內存管理函數(shù),可以按需要動態(tài)地分配內存空間1.開辟內存空間函數(shù)malloc()

函數(shù)的原型為:

void*malloc(int);

一般調用形式:

(類型說明符*)malloc(size);功能:在內存的動態(tài)存儲區(qū)中開辟一塊長度為size字節(jié)的連續(xù)區(qū)域,size是一個正整數(shù)返回值:開辟內存區(qū)域的首地址,該地址的類型為“void*”類型,即不確定的指針類型例如:

char*pc; pc=(char*)malloc(100);表示開辟100個字節(jié)的內存空間開辟空間的首地址強制轉換為“char*”型注意:malloc()函數(shù)并不能初始化所分配的內存空間,開辟的內存空間一般都是隨機數(shù)2.開辟內存空間函數(shù)calloc()函數(shù)原型為:

void*calloc(int,int);一般調用形式:

(類型說明符*)calloc(n,size);功能:在內存動態(tài)存儲區(qū)中分配n塊長度為size字節(jié)的連續(xù)內存區(qū)域;返回值:開辟區(qū)域的首地址;“(類型說明符*)”用于函數(shù)返回值的強制類型轉換calloc()函數(shù)與malloc()函數(shù)的區(qū)別

calloc()一次可以分配n塊區(qū)域,每塊區(qū)域的長度都為size個字節(jié)。例如:structstu*ps;

ps=(structstu*)calloc(2,sizeof(structstu));sizeof(structstu)是求structstu型結構體數(shù)據(jù)的長度功能:按structstu的長度分配2塊連續(xù)的內存區(qū)域,并將該內存區(qū)域的首地址強制轉換為structstu結構體指針類型,并將該地址賦給指針變量ps。calloc()函數(shù)與malloc()函數(shù)的區(qū)別

calloc()函數(shù)會將所開辟內存空間中的每一位都初始化為零,malloc()函數(shù)并不能初始化所分配的內存空間。為字符類型或整數(shù)類型的元素分配內存,那么這些元素將保證會被初始化為0為指針類型的元素分配內存,那么這些元素通常會被初始化為空指針NULL為實型數(shù)據(jù)分配內存,則這些元素會被初始化為浮點型的零3.釋放內存空間函數(shù)free()該函數(shù)的調用形式:

free(ptr);功能:釋放指針變量ptr所指向的內存空間,該空間是由malloc()或calloc()函數(shù)開辟的。二.鏈表簡介鏈表是一種動態(tài)的進行存儲分配的數(shù)據(jù)結構。圖表示了一種最簡單的鏈表結構:單向鏈表。頭指針一個結點數(shù)據(jù)域指針域單向鏈表結構首結點首結點:存放第一個有效數(shù)據(jù)的結點頭結點:頭結點的數(shù)據(jù)類型和首結點相同頭結點是首結點前面的那個結點頭結點并不存放有效數(shù)據(jù)設置頭結點的目的是為了方便對鏈表的操作結點結構體類型定義如下structnode

//結點類型名{

chardata;

//數(shù)據(jù)域structnode*next; //指針域

};如存儲學生相關的信息的結點定義structStuNode{

charnum[10];

//學號charname[20]; //姓名floatscore; //分數(shù)structStuNode*next;

//指針域};對鏈表的基本操作有建立鏈表、輸出鏈表、查找結點、插入結點和刪除結點等。1.建立鏈表建立單向鏈表的主要步驟:讀取數(shù)據(jù)、申請存放新結點的存儲空間、將數(shù)據(jù)存入結點空間、將新結點添加到鏈表中,重復上述操作直至結束。三.鏈表的基本操作2.輸出整個鏈表輸出整個鏈表即從鏈表的頭指針開始,按順序依次訪問鏈表中的各個數(shù)據(jù)結點,每訪問到一個數(shù)據(jù)結點時就將該結點數(shù)據(jù)域中的內容輸出。當訪問到鏈表中的最后一個結點時,由于其指針域為空,所以可依此作為條件結束輸出?!纠?-9】建立并輸出一個學生數(shù)據(jù)的單向鏈表。學生數(shù)據(jù)包括:學號、姓名和成績。3.查找結點從鏈表的頭指針開始,按順序依次訪問鏈表中的各個數(shù)據(jù)結點,查找關鍵字與當前結點數(shù)據(jù)域中內容,相等則查找成功,輸出;如不等則移動指針查看下一結點。如訪問到最后一個結點時仍未找到,則結束查找,提示不存在。4.插入結點開辟新結點用指針s指向,并將要插入的數(shù)據(jù)data存入新結點空間的數(shù)據(jù)域中,插入過程如圖

s->next=p->next;

p->next

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論