資料結構 鍊錶中的 指標,位址

2021-08-29 03:54:16 字數 1388 閱讀 8204

資料結構中跳過集合,直接開始線性結構

線性結構中單鏈表的操作涉及到給乙個變數賦值位址,所以涉及到了指標

通過指標裡的位址很方便找到節點

但指標這裡繞了我很長時間,不論學了多少遍也不敢說把指標學會了

位址是什麼,從**來? 位址是記憶體中每個位元組的編號

我的電腦記憶體是4g=4×1024(m)×1024(k)×1024(byte)=4294967296 byte

其中每個位元組byte=8位bit

如果為每乙個位元組編碼,那麼範圍為0~4294967295(十進位制)

換算為2進製:0000 0000 0000 0000 ~ 1100 1101 1111 1111 1111 1111 1111 1111(32bit)

換算為16進製制:0x 00000000 ~ 0xcdffffff

所以人們就用:0x 00000000 ~ 0xffffffff 來表示記憶體位址的範圍

其中乙個位元組分配乙個位址

指標是什麼,從**來?指標是儲存位址的變數

記憶體編號為 0xcdffffff的空間裡存了乙個整數3

將0xcdffffff這個位址存放到記憶體編號為0xcdfffff0的記憶體空間中

在程式中宣告了乙個整型的指標變數,這個變數裡存的就是0xcdfffff0

由於這個指標所指向的位址空間裡存放的是個整型數,所以這個指標的型別就為整型

*代表   指向某個記憶體編號(位址)的指標

& 取出位址

&(*a) 取出位址變數*a的儲存內容,結果為0xcdffffff

帶*號的不一定就是指標,&取位址符的結果也不一定就是位址,因為有時候會用巢狀,使得問題不能直**出來!

這時候,最最最重要的就是看 *後面的變數名裡存的究竟是什麼。

如果是乙個真實的記憶體編號,那才是指標

例如:

c語言的表示

p  是乙個指標,指標裡存放的是結點a的位址

p->  代表  指標p所存的位址對應的內容,這裡p指標裡存的是個節點,所以p->代表結點

p->next 代表 取這個節點的指標域的內容,這樣就得到了下乙個節點所在的記憶體位址

p->data 代表 取這個節點的資料域的內容

資料結構頭指標鍊錶

頭指標鍊錶 頭指標煉表相較於頭結點鍊錶操作起來更繁瑣。以下是頭指標鍊錶的基本操作 include include define true 1 define false 0 typedef int linkdata 鍊錶的資料型別 typedef struct node node 鍊錶的頭插 int ...

資料結構(鍊錶雙指標)2020 08 10

給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,...

資料結構中煉表模板

include include typedef struct node node 鍊錶輸出 void output node head printf r n 鍊錶建立 node creat head pstnext null p head while cycle s ndate date p pst...