用c語言建立連結串列時,必須用兩個指標嗎

2021-05-28 18:57:39 字數 2089 閱讀 5249

1樓:匿名使用者

一個指標就夠了,還有一個長度標識。

struct list;

2樓:匿名使用者

是的,一頭一尾,分別要用指標標識出來

建立連結串列必須有兩個指標嗎

3樓:周盛城

不對,連結串列的next沒有指向,你應該想問為什麼需要p和q兩個指標建立連結串列吧,就跟你一樣用p來建立也可以的

4樓:ou淫娃子

是單連結串列還是雙連結串列? 單連結串列只需要一個,雙連結串列需要兩個

5樓:暮城曙光夜郎溪

連結串列分單向,雙向連結串列結構。單向是從左到右。雙向不是兩個指標,是它從左到右了,還能從右到左遍歷。

c語言中建立動態連結串列要用雙重指標嗎?那個雙重指標有什麼作用?

6樓:匿名使用者

舉個例吧,

假如一個結構:linknode

初始化:initial(linknode **p);//這裡就是雙指標

那麼在呼叫就這樣,

linknode *p;

initial(&p);

原理就是,如果你要通過函式來改變某個引數的值,那麼就要傳該引數的地址進去。

這裡p是一個指標,所以要傳指標的地址進去,也就是一個指向指標的指標;

初始化函式initial(linknode *(*p));(*p)是指標,*(*p)就是傳指標的地址進去了,意思就這樣,不知道你聽不聽得懂。

不管動態還是靜態,只要是要通過函式來改變指標型別資料的值,就要用雙重指標。

7樓:匿名使用者

樓上講得不錯

再幫補充一下細節:

這樣呼叫

linknode *p = null;

initial(&p);

經過 initial(&p) 的作用後,p就不再是 null 了,而是一個真正可用的連結串列指標

c語言的單連結串列在開創記憶體空間時為什麼要用到雙重指標?

8樓:匿名使用者

你的意思是復這樣嗎

list *l;

insert(&l);//初始

化制insert(list **l)

你問的是 初始化中 為什麼要雙重指標嗎?

如果是的話,那麼意思是,你想通過函式來改變l的值,但是l是指標型別,所以你要改變它的值就要傳l的地址進去,因為雙重指標的意思就是指向指標的指標,就是指標的地址,那麼**l就是指向指標l的地址,那麼通過函式呼叫雙重指標就能改變指標l的值。

道理就是:要傳遞變數的地址才能使變數的值發生變化.現在的變數是指標型,所以要傳指標型別的地址,也就是雙重指標。

不知道我理解對了沒

關於c語言連結串列 建立動態單向連結串列時為什麼需要結構體指標p1和p2 一個頭指標不就夠了嗎,對於鏈

9樓:匿名使用者

首先,頭指標不能丟,需要

儲存的,而p1是從頭指標得到首節點後,檢視當前指向節點的next是否為空判斷是否尾節點,如果不是尾節點,或者說當前節點的next不為null則p1將被賦值成這個next以便找到連結串列下一個節點,而p1一開始儲存的頭指標就會被沖掉,所以在進行操作後p1就不能被當成鏈首指標來用了。

其次,新的節點生成,會通過new或malloc來申請空間,其返回值是個指標,這時一般要用指標變數p2來接收這個指標,然後將連結串列尾節點的next賦值成這個p2的內容,p2指向的next再賦值成null成為尾節點。

最後,如果需要在連結串列中插入,就需要一個指標p1指向當前節點,另一個p2指向當前節點之後的節點,然後將p1的next賦值成新節點指標,新節點指標的next賦值成p2,完成插入。

總體來說,所謂p1和p2是臨時輔助性的變數,是為方便使用的中間變數,這個從方便出發申請的工作變數也無需節省。

10樓:♀安若晨

建立一個動態連結串列的時候都會定義兩個結構體指標(p1 p2), 指標p2的作用一般都是用來將新結點(p1)的地址賦值給上一個結點的next成員。如:p2-> next = p1; 這個操作實現了連結串列中各個結點的關聯關係。

怎麼將兩個連結串列用C語言連結起來

將一個連結串列最末端的元素裡的next指向另一個連結串列的第一個元素,如果連結串列內有頭指標作為標記的,要去掉頭指標 兩個連結串列的結構體時一樣的吧 比方說,第一個連結串列的頭結點是 head1指標,第二個連結串列的頭結點是 head2指標,如果你需要,把head2位頭指標的連結串列連線到head1...

用c語言編寫程式鍵盤輸入a和b兩個整數要求用函

注 使用c語言實現,望採納哦 有問題再問哦 o c語言源 include int main include void main 望採納 include main int adup int x,int y 或 include int sum int a,int b void main include ...

c語言裡可以用兩個邏輯或連線條件一起使用麼

是的,if c 0 c 1 c 2 代表c的是時0或1或2時,條件為真,執行條件 if a 0 b 1 c 2 代表a 0且b 1且c 2時,條件為真,執行條件 這個,按照你的寫法這應該表示c為0,1,1中的任何一個值條件就為真 為什麼一定要說是邏輯真呢?這個概念一般不作區分吧。這樣寫是可以的 在c...