鍊錶有乙個頭指標變數head,它存放乙個位址,該位址指向乙個元素。鍊錶中每乙個元素都稱為「節點」。每個節點都應包含兩部分,乙個使用者需要用的實際資料和下乙個節點的位址。head指向第乙個節點,第乙個元素又指向第二個節點,直到最後乙個元素,該元素不再指向其他元素,它稱為"表尾",它的位址存放的乙個mull的空位址,鍊錶到此結束。
#include
#define null 0
struct student
;int main(void)
while (p!=null);
}這是乙個靜態的鍊錶,所有節點都是在程式中定義的,不是臨時開闢的,也不能用完後釋放,這種鍊錶稱為「靜態鍊錶」。
處理動態鍊錶所需的函式:
鍊錶結構都是動態地分配儲存的,即在需要時才開闢乙個節點的儲存單元,怎樣動態的開闢和釋放儲存單元,有以下函式:
void * malloc(unsigned int n);
其作用是在記憶體的動態儲存區中分配乙個長度為n的連續空間,此函式的值即返回值是乙個指向分配域起始位址的指標,型別為void。如果此函式未能成功執行,如記憶體不夠,則返回null空指標。
void* calloc(unsigned n,unsigned size);
其作用是在記憶體的動態儲存區中分配n個長度為size的連續空間,函式返回乙個指向分配域起始位址的指標。如果分配不成功,則返回null;用calloc函式可以為一維陣列開闢動態儲存空間,n為陣列元素個數,每個元素長度為size。
void free(void* p);
其作用是釋放由p指向的記憶體區,使這部分記憶體區能夠被其他辯論賽還有。無返回值。
typedef的使用:使用typedef宣告新的型別名來代替已有的型別名,用新型別去定義變數。
typedef stuct
int month;
int day;
int year;
}date;
date birthday;
date* p;還可以進一步:
typedef int num[100] 宣告num為整形陣列型別
num n;定義n為整形陣列變數。
typedef int (*pointer)() 宣告pointer為指向函式的指標型別,該函式返回整形值
pointer p1,p2 p1 p2為pointer型別的指標變數
#define putchar(c) fputc(c,stdout)
鍊錶的概念
鍊錶的概念 鍊錶是結構體最重要的應用,它是一種非固定長度的資料結構,是一種動態儲存技術,它能夠根據資料的結構特點和數量使用記憶體,尤其適用於資料個數可變的資料儲存。鍊錶有個頭指標變數head,它存放乙個位址。該位址指向乙個元素,鍊錶中每乙個元素稱為節點,每個節點都應包括兩個部分 一為使用者需要的實際...
鍊錶在c中的應用
時隔3天,最近真的有點事偷了個小懶,在此一定要自我檢討下,sorry,listo。現在來談談鍊錶在c重的應用 首先是鍊錶的概念以及意義 鍊錶的出現就可以緩解使用陣列時記憶體的浪費問題,可以更高效的使資料儲存和使用。鍊錶基礎理論 可以將鍊錶的乙個結點看作有資料部分和指標部分構成的,所以,這裡用到結構體...
鍊錶的應用 廣義表 多重鍊錶
廣義表 1 所謂廣義表就是線性表的推廣,怎麼說呢,以前線性表存的是乙個資料元素,現在呢是線性表的結點可以指向另乙個線性表,這就是廣義表啦 typedef struct gnode glist typedef struct gnode glist next gnode 多重鍊錶1 什麼是多重鍊錶,就是...