求助 單鏈表合併指標問題

2021-10-11 21:34:22 字數 1203 閱讀 1072

首先做乙個試驗

#include

using

namespace std;

template

<

class

t>

struct linknode

linknode

(const t& item, linknode

* ptr =

null)}

;int

main()

執行結果如下

說明兩個節點的link可以指向同乙個節點,修改乙個節點的link會對另乙個節點有影響,但編譯器沒有報錯

在單鏈表合併的函式裡

template

<

typename t>

void

merge

(list

& a, list

& b)

prea = prea-

>link;

ptra = prea-

>link;}if

(ptrb !=

null

)}

最後的if寫成這樣時

if

(ptrb !=

null

)

執行結果如下

並且編譯器沒有報錯

但如果去掉preb->link = null

if

(ptrb !=

null

)

在有如下執行結果的同時

編譯器還會報錯

最開始的試驗說明兩個節點的指標可以指向同乙個節點,但是為什麼會出錯呢

單鏈表(合併單鏈表)

單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...

單鏈表合併

某公司的面試題。兩個公升序單鏈表a,b,給定乙個節點c。不能申請其他節點情況下將a,b 按公升序排列。include include include struct link 建立鍊錶 nrandom 自由因子 ncount 鍊錶節點數目 link create const int nrandom,c...

合併單鏈表

線性表介面 public inte ce ilinarlist 單鏈表實現線性表 public class slinklistimplements ilinarlist 初始化線性表 public slinklist 新增元素,將元素新增在單鏈表的末尾 public boolean add e it...