用指標處理鍊錶

2021-10-01 08:03:53 字數 1838 閱讀 2401

鍊錶是一種常見的重要資料結構。它是動態地進行儲蓄分類的一種結構。

鍊錶有一系列節點構成,節點在執行時動態生成,每個節點包括資料域,資料域儲存當前節點的資訊,指標域儲存下乙個節點的手位址。

記憶體隨著時間的增加會找不到大塊的順序空間

陣列的大小只能是固定的,增加或刪除都會移動大量資料

鏈式儲存大小可以伸縮

鏈式儲存利用率高

靜態鍊錶中的結點都是在程式中定義的,不是臨時開闢的。

**如下

#include

struct student ;

intmain()

while

(p!=

null);

//輸出鍊錶中的資料

return0;

}

建立動態鍊錶,我們需要開闢動態儲存區。

這裡我們用到malloc函式

函式原型為

void*malloc(unsighed int size)

下面是源**

首先我們需要定義乙個結構體

#include

#include

struct node

;

定義結構體指標

int

main()

輸出動態鍊錶中的資料

a = head;

//將a的位址初始化為首位址

while

(a !=

null

)return0;

}

這樣我們就建立了乙個動態鍊錶,那麼如何在動態鍊錶中插入結點呢?

首先,為新結點開闢動態儲存空間

c=

(struct node *

)malloc

(sizeof

(struct node *))

;//動態開闢儲存空間

scanf_s

("%s%d%d"

,&c->info,

&c->grade[0]

,&c->grade[1]

);c->link =

null

;

在插入結點時,我們需要明確插入結點的位置。分為以下3種情況

1.結點在開頭

if

(a==head)

2.結點在末尾

else

if(a==

null

)b->link=c;

3.結點在中間

else

不同的情況用不同的**進行連線

那麼,我們如何確定插入結點的位置呢?

這裡,我們用a,b兩個指標分別記錄新結點c前後相鄰的兩個位址

**如下

a=head;

while(a!=

null

&&c->grade>a->grade)

我們用乙個while迴圈依次判斷,直到c中的grade比鍊錶結點中的grade小,或者到最後是跳出迴圈。這樣我們就用a,b取到新結點c前後相鄰的兩個位址。然後按上述方法連線便可實現插入了。

用指標處理鍊錶

用指標處理鍊錶 建立乙個簡單的鍊錶,它由3個學生資料的結點組成,要求輸出各結點中的資料 include struct student int main while p null 輸出完c結點後p的值為null,迴圈終止 return 0 寫一函式建立乙個有3名學生資料的單向動態鍊錶 include ...

用指標處理鍊錶

鍊錶概述 鍊錶是一種常見的重要的資料結構。它是動態地進行儲存分配的一種結構。鍊錶有乙個 頭指標 變數,它存放乙個位址,該位址指向乙個元素,鍊錶中每乙個元素稱為 結點,每個結點都應包括兩個部分,一為使用者需要用的實際資料,二為下乙個結點的位址。可以看出,頭指標 head 指向第乙個元素,第乙個元素又指...

C語言 關於用指標處理鍊錶

指標 指標的定義 型別名 指標變數名 如 int p 定義的同時進行初始化 int p a 指針對陣列的引用 int a 5 int p p a 0 表示把a 0 的位址賦值給指標p 或者寫 p a 表示把陣列a首元素的位址 即a 0 陣列指標的運算 p 與 p 是不同的 p 是先取 p 的值,然後...