鏈表的C語言實現(xiàn)方法編程學習_第1頁
鏈表的C語言實現(xiàn)方法編程學習_第2頁
鏈表的C語言實現(xiàn)方法編程學習_第3頁
鏈表的C語言實現(xiàn)方法編程學習_第4頁
鏈表的C語言實現(xiàn)方法編程學習_第5頁
全文預覽已結束

下載本文檔

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

文檔簡介

本文格式為Word版,下載可任意編輯——鏈表的C語言實現(xiàn)方法編程學習C語言的應用范圍廣泛,具備很強的數(shù)據(jù)處理才能,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,概括應用譬如單片機以及嵌入式系統(tǒng)開發(fā)。以下是我為大家探尋整理鏈表的C語言實現(xiàn)方法,夢想能給大家?guī)矸鲋?更多精彩內容請實時關注我們考試網(wǎng)!

一、為什么用動態(tài)內存調配

但我們未學習鏈表的時候,假設要存儲數(shù)量對比多的同類型或同布局的數(shù)據(jù)的時候,總是使用一個數(shù)組。譬如說我們要存儲一個班級學生的某科分數(shù),總是定義一個float型存在0.5分數(shù)組:

floatscore[30];

但是,在使用數(shù)組的時候,總有一個問題困擾著我們:數(shù)組理應有多大?

在好多的處境下,你并不能確定要使用多大的數(shù)組,譬如上例,你可能并不知道該班級的學生的人數(shù),那么你就要把數(shù)組定義得足夠大。這樣,你的程序在運行時就申請了固定大小的你認為足夠大的內存空間。即使你知道該班級的學生數(shù),但是假設由于某種特殊理由人數(shù)有增加或者裁減,你又務必重新去修改程序,擴大數(shù)組的存儲范圍。這種調配固定大小的內存調配方法稱之為靜態(tài)內存調配。但是這種內存調配的方法存在對比嚴重的缺陷,更加是處理某些問題時:在大多數(shù)處境下會濫用大量的內存空間,在少數(shù)處境下,當你定義的數(shù)組不夠大時,可能引起下標越界錯誤,甚至導致嚴重后果。

那么有沒有其它的方法來解決這樣的外呢體呢?有,那就是動態(tài)內存調配。

所謂動態(tài)內存調配就是指在程序執(zhí)行的過程中動態(tài)地調配或者回收存儲空間的調配內存的方法。動態(tài)內存調配不象數(shù)組等靜態(tài)內存調配方法那樣需要預先調配存儲空間,而是由系統(tǒng)根據(jù)程序的需要即時調配,且調配的大小就是程序要求的大小。從以上動、靜態(tài)內存調配對比可以知道動態(tài)內存調配相對于景泰內存調配的特點:

1、不需要預先調配存儲空間;

2、調配的空間可以根據(jù)程序的需要擴大或縮小。

二、如何實現(xiàn)動態(tài)內存調配及其管理

要實現(xiàn)根據(jù)程序的需要動態(tài)調配存儲空間,就務必用到以下幾個函數(shù)

1、malloc函數(shù)

malloc函數(shù)的原型為:

void*mallocunsignedintsize

其作用是在內存的動態(tài)存儲區(qū)中調配一個長度為size的連續(xù)空間。其參數(shù)是一個無符號整形數(shù),返回值是一個指向所調配的連續(xù)存儲域的起始地址的指針。還有一點務必留神的是,當函數(shù)未能告成調配存儲空間如內存缺乏就會返回一個NULL指針。所以在調用該函數(shù)時理應檢測返回值是否為NULL并執(zhí)行相應的操作。

下例是一個動態(tài)調配的程序:

[cpp]viewplaincopy

#includemalloc.h

#includestdlib.h

mainvoid

/*count是一個計數(shù)器,array是一個整型指針,也可以理解為指向一個整型數(shù)組的首地址*/

intcount;

int*array;

array=malloc10*sizeofint;

ifarray==NULL

printfOutofmemory!;

exit1;

/*給數(shù)組賦值*/

forcount=0;count10;count++

array[count]=count;

/*打印數(shù)組元素*/

forcount=0;count10;count++

printf%2d,array[count];

上例中動態(tài)調配了10個整型存儲區(qū)域,然后舉行賦值并打印。例中ifarrayint*malloc10*sizeofint==NULL語句可以分為以下幾步:

1調配10個整型的連續(xù)存儲空間,并返回一個指向其起始地址的整型指針

2把此整型指針地址賦給array

3檢測返回值是否為NULL

2、free函數(shù)

由于內存區(qū)域總是有限的,不能不限制地調配下去,而且一個程序要盡量節(jié)省資源,所以當所調配的內存區(qū)域不用時,就要釋放它,以便其它的變量或者程序使用。這時我們就要用到free函數(shù)。

其函數(shù)原型是:

voidfreevoid*p

作用是釋放指針p所指向的內存區(qū)。

其參數(shù)p務必是從前調用malloc函數(shù)或calloc函數(shù)另一個動態(tài)調配存儲區(qū)域的函數(shù)時返回的指針。給free函數(shù)傳遞其它的值很可能造成死機或其它災難性的后果。

留神:這里重要的是指針的值,而不是用來申請動態(tài)內存的指針本身。例:

int*p1,*p2;

溫馨提示

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

評論

0/150

提交評論