鍊錶(鍊錶建立)

2021-09-29 04:51:01 字數 1324 閱讀 7588

先找到了一些與單鏈表相關的概念

2.指標域:ai元素儲存指向後繼元素儲存位置的資訊

3.結點:包含資料域和指標域

4.單鏈表:每個結點只包含乙個指標域的線性表

5.頭指標(要素):鍊錶中第乙個結點的儲存位置(線性表最後乙個結點指標為空)

6.頭結點(非要素):單鏈表第乙個結點前附設乙個結點(其指標域指向第乙個結點的指標)

(若線性表是空表則頭結點的指標域為空)

鍊錶的建立

自己新學到的方法:頭插法與尾插法。

頭插法(就是你輸入的新元素得被插入到前面,而你輸入的最後乙個元素處在鍊錶的第一位:

//首先要建立乙個結構體,例如(學生資訊的結構體)

struct student

;//然後建立乙個鍊錶的結構體

typedef

struct node

node;

typedef

struct node *linklist;

//定義鍊錶linklist.這裡使得linklist==struct node *

這個是自定義函式的部分

void

createlist

(linklist *phead,

int n)

//頭插法創表返回值為空

}

思路:首先建立乙個指標pnew,為phead開闢空間,也就是讓phead這個指標指向記憶體中的乙個位置,

phead->next= null讓phead指向的空間為空,

接著進入迴圈,開始不斷地建立新的房間,pnew也不斷地指向新的空間,scanf("%d",&phead->data);表示輸入資料,

pnew->next=(*phead)->next;表示pnew->next指向了phead->next指向的空間的首位址(可以畫圖理解一下)

(*phead)->next=pnew;

(*phead)->next不再指null,指向了pnew指向的空間的首位址。

尾插法(正常的思維模式,輸出的順序就是輸入的順序):

void

createlisttail

(linklist *phead,

int n)

ptail->next=

null

;}

之前的與頭插法一樣,但在定義指標的時候定義乙個尾指標,

尾指標永遠都指向鍊錶的尾(最後乙個節點)

ptail->next=pnew;ptail->next 指向pnew 指向的空間,即指向下乙個節點

ptail=pnew;ptail後移

動態建立鍊錶及列印鍊錶 (鍊錶學習 一)

動態建立鍊錶主要思想 定義三個執行結構體型別資料的指標,head,p1,p2,當輸入的值p1 num不為0並且為第乙個節點的時候,把該節點賦給頭結點 p1這個指標,主要是用來指向剛輸入過資料的節點,p2這個指標,主要負責把p1剛輸入的資料的這個節點加到鍊錶中來。當輸入為0時程式結束,返回頭結點,具體...

單向鍊錶之建立特殊鍊錶及跑鍊錶習題

一 有關建立鍊錶 設資料集合a,其值均為正整數,無序且含有重複值。建立乙個單向鍊錶,每個結點資料域的值為資料集合的值且不重複 例a 建立後的鍊錶如下 如下 include define n 8 typedef struct nodeelemsn elemsn createlink int a int...

建立動態鍊錶

3 建立動態鍊錶 學自徐洪波c語言教程 include include 鍊錶結構體 struct node int value struct node next void creat struct node root struct node tail struct node p p struct n...