資料結構中雙指標的使用

2021-07-10 22:53:39 字數 1277 閱讀 8781

我們在學習資料結構中的線性表,或者棧佇列的時候都遇到了初始化需要傳雙指標,初學者很不好理解為什麼要傳遞雙指標。我根據我個人學習的經驗寫了這個文章,希望對初學者有一些幫助。同時有不對的地方希望大神們補充。

我們先簡單介紹函式呼叫時的三種引數傳遞的方法吧~~

1.簡單的值傳遞

這是函式引數傳遞中最簡單的一種,原理是將實參拷貝乙份,然後把拷貝的值傳遞給形參,子函式中如果改變了形參,也只是改變拷貝的數值,並不影響原來的值。

子函式中修改了指標的指向,如果將指標看成是乙個變數,那麼這裡的引數傳遞相當於值傳遞,返回時*p的值還為1

修改為:

#include 

using

namespace

std;

int x = 1, y = 2;

void change(int **p)

void main()

為了方便理解,我們可以將其中的*p看成是之前的簡單變數x。

那麼我們是麼時候用指標?什麼時候用雙指標呢?

當我們在子函式中需要修改傳過來的變數,並希望返回時它的值已經改變,我們要用指標。

當我們在子函式中需要修改指標指向的時候(不是修改指標的內容),並希望返回時指標指向已經修改,則需要用雙指標。

—————————並不帥氣的分界線——————–

現在我們再回過頭看資料結構,就會比較清楚了

#include 

#include

using

namespace

std;

#define datatype int

#define maxsize 5

typedef

struct

seqstack;

//置空棧

void init_seqstack(seqstack **s)

//部分省略

void main()

}

因為init_seqstack函式中修改了棧指標s所指向的內容,所以要是使用雙指標。

資料結構演算法 雙指標

演算法核心思想 雙指標多用於遍歷陣列,可以同時遍歷乙個陣列或分別遍歷不同的陣列。常見的設計思想如下 對於排序後的陣列,雙指標分別指向陣列的頭尾,遍歷方向相反,用於搜尋。雙指標指向兩個陣列,分別遍歷 快慢指標 滑動視窗 兩數之和 167.two sum ii input array is sorted...

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

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

資料結構指標的使用注意

單鏈表的插入 建立乙個新的結點s,代替l的指標移動。這樣做的好處是,不移動l的指標,使得l的狀態不被改變,但同樣能對l的鍊錶操作達到相同的效果。執行結果圖示 如果不使用上面的做法的話,直接對l進行操作,l會移動自己的位置,再最後插入完畢之後,需要將l的位置歸位。如下所示 status listins...