2019 10 25鍊錶1

2021-09-29 02:23:00 字數 2125 閱讀 3314

typedef的用法

case 1

#include

typedef

int zhagnsan;

//為int再重新多取乙個名字,zhagnsan等價於int

typedef

struct student

st;int

main

(void

)

case 2

#include

typedef

int zhagnsan;

//為int再重新多取乙個名字,zhagnsan等價於int

typedef

struct student

*pst;

//pst等價於struct student *

intmain

(void

)

case 3

#include

typedef

int zhagnsan;

//為int再重新多取乙個名字,zhagnsan等價於int

typedef

struct student

*pstu,stu;

//pstu等價於struct student *,stu代表了struct student

intmain

(void

)

鍊錶的定義

定義:

n個節點離散分配;彼此通過指標相連;每個節點只有乙個後續節點,首節點沒有前驅節點,尾節點沒有後續節點。

專業術語:

首節點:第乙個有效節點

尾節點:最後乙個有效節點

頭節點:頭節點的資料型別和首節點的資料型別相同。第乙個有效節點之前的那個節點;頭節點並不存放存放有效資料;加頭節點的目主要是為了方便對鍊錶的操作。

頭指標:指向頭節點的指標變數

尾指標:指向尾節點的指標變數

頭節點-首節點。。。。。。尾節點【頭節點並沒有儲存有效資料,也沒有存放鍊錶中有效節點的個數。首節點開始存放有效資料。在鍊錶前邊加乙個沒有實際意義的頭節點,可以方便對鍊錶的操作。頭節點於之後節點的資料型別相同】

如果希望通過乙個函式來對鍊錶進行處理,我們至少需要接受鍊錶的哪些引數

如果希望通過乙個函式來對鍊錶進行處理,我們至少需要接受鍊錶的哪些引數

只需要乙個引數:頭指標

因為我們通過頭指標可以推算出鍊錶的其他所有引數

每乙個鍊錶節點的資料型別該如何表示的問題

case 1

#include

typedef

struct node

node,

*pnode;

//node等價於struct node,pnode等價於struct node *

intmain

(void

)

鍊錶的分類

分類:單鏈表:每個鍊錶的指標域只能指向後面的節點

雙鏈表:每乙個節點有兩個指標域

迴圈鍊錶:能通過任何乙個節點找到其他所有的結點

非迴圈鍊錶:

非迴圈單鏈表插入節點偽演算法講解

演算法:遍歷

查詢清空

銷毀求長度

排序刪除節點

插入節點

插入演算法1)r=p->pnext;p->next=q;q->pnext=r;

插入演算法2)q->next=p->pnext;p->next=q;【p,q不是節點,是指標變數】

刪除非迴圈單鏈表節點偽演算法的講解

刪除演算法1(不採用):

p->pnext=p->pnext->pnext;

//容易導致記憶體洩露,沒有釋放記憶體

演算法2:先臨時定義乙個指向p後面節點的指標r

r=p->pnext;

p->pnext=p->pnext->pnext;

free

(r);

鍊錶1 單向鍊錶

鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...

學生鍊錶1

include include define null 0 define len sizeof struct student struct student int n struct student creat p2 next null return head out void print head ...

鍊錶總結1

1.給定乙個鍊錶的頭指標,在一次遍歷中,找出這個鍊錶中的中間節點並返回。基本思想 設立兩個指標,比如 p和 q。p每次移動兩個位置,而q每次移動乙個位置,當p到達最後乙個節點時,q就是中間節點了。2.查詢鍊錶中倒數第k個節點 基本思想 兩個指標,保持距離k 3.怎麼判斷鍊錶中是否有環?基本思想 與5...