在C語言鍊錶中,p q next和p next q next有什麼區別

2021-03-23 14:04:41 字數 4459 閱讀 2713

1樓:匿名使用者

給你普及下指標的真諦:

假設兩個鍊錶節點的記憶體位址分別為aaaa和bbbb,節點內偏移4位元組處儲存名為next的指標,

p = 0xaaaa,q=0xbbbb,這說明p和q分別指向這兩個節點。

p->next是記憶體aaae處的內容,q->next是記憶體bbbf處的內容(假設為cccc)

那麼, p = q->next 即p=0xcccc

p->next = q->next,即將記憶體aaae處的內容改為cccc

兩值意義相差甚遠。

2樓:足球隊聯絡員

我想了乙個晚上,這是我的思考成果。

3樓:晚霞拉長了身影

p=q—>next的意思是把p結點接到q結點後面,p—>next=q—>next的意思是把q結點的下乙個結點接到p結點後。

怎麼理解p=p一>next,假如這個鍊錶執行p等於p的next, 20

4樓:匿名使用者

p=q->next使p指向q->next,p的值被改變,變為q->nextq->next=p使p的值賦給q->next,q->next的值被改變,變為p兩者最後都指向同一位址,只是被改變的物件不同

5樓:育知同創教育

頭節點不是元素節點,它的任務就是起到乙個帶頭作用,如果能抓住它,就能很好的訪問元素。。。。頭節點只有乙個(程式中只建立乙個頭節點),而元素節點是可以有多個(這個體現在你的for迴圈中)。

6樓:閭丘齊夏銘

r->next=p;——讓指標r指向的結點的下乙個結點的指標等於指標p。

r=p;——將p賦給r。

雖然看不到上下文,但大致意思是執行這兩后,就將p指向的鍊錶接在了r指向的結點後,並r的指向向後移動了乙個結點……供參考。

c語言鍊錶中p=q->next與q->next=p的區別

7樓:千尋無言

p=q->next 使p指向q->next,p的值被改變,變為q->next

q->next=p 使p的值賦給q->next,q->next的值被改變,變為p

兩者最後都指向同一位址,只是被改變的物件不同

8樓:匿名使用者

p=q->next是把q後面的鍊錶鏈結到p的後面;

q->next=p是把p鏈結到q的後面;

希望好好意會。

p_>next=q與q=p_>next有什麼區別?

9樓:蒼井空

假設p指標指向a,q指標指向b,則p_>next=q表示將a與b連線起來,且在單鏈表中a指向b,而q=p_>next表示將b與a連線起來,且在單鏈表中b指向a。如果單鏈表只有a和b,則形成迴圈鍊錶。

10樓:小雨兒

p_>next=q是將q存的值放到p_的子元素next裡 q=p_>next是將p_的子元素next裡的值放p裡

資料結構單鏈表插入單鏈表中q->next=p->next和p->next=q

11樓:

這兩句是把q插入單鏈表的c語言描述語句。我們暫且假設p的後繼

為r,第一句的意思是把p的後繼,也就是r,賦給q的後繼,此時r既是p的後繼,也是q的後繼,也就是說q已經指向r了,此時再讓p的後繼指標指向q(也就是q賦給p的後繼)即可(這也正是第二句的意思),這樣就完成了q的插入。

你可以將「->」讀作「的」,那麼這兩句就可以讀作:把p的後繼賦給q的後繼,q賦給p的後繼。這樣讀就很容易理解了。

12樓:匿名使用者

q->next=p->next是指 p的next指標指向的位址賦值給 q的next指標.

p->next = q 是指 q的位址賦值給p的next指標.在q->next在右邊就不對了,p->next的位址覆蓋了q,q本來指向的位址就找不到了。

q是乙個指標變數,你可以理解為q的記憶體位址,q->next 指向q的下乙個節點記憶體位址。

c語言鍊錶中q->next=p;表示什麼意思?

13樓:南瓜蘋果

q->next = p; 表示將節點p加入到節點q之後。

意思:使當前指標指向鍊錶的下乙個結點。

一般作用在資料結構中的單鏈表裡由應用,語句中的p一般指向乙個結構體型別的資料,此型別的資料通常表示節點;結構體裡存放的一些資料和記錄下乙個節點位址的指標變數next;這個next就好比鏈條一樣,連線著乙個個節點。

->是乙個整體,它是用於指向結構體、c++中的class等含有子資料的指標用來取子資料。換種說法,如果在c語言中定義了乙個結構體,然後申明乙個指標指向這個結構體,那麼要用指標取出結構體中的資料,就要用到「->」.

擴充套件資料鍊錶的特點:

1、n個節點離散分配

2、每乙個節點之間通過指標相連

3、每乙個節點有乙個前驅節點和乙個後繼節點4、首節點沒有前驅節點,尾節點沒有後繼節點建立鍊錶前須知

首節點:存放第乙個有效資料的節點。

頭節點:在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點(首節點)的位址。頭結點的作用是使所有鍊錶(包括空表)的頭指標非空。

頭指標:指向頭節點的指標。

尾節點:存放最後乙個有效資料的節點。

尾指標:指向尾節點的指標。

14樓:匿名使用者

q-.next=p;

把p的位址賦給q的下乙個位址

while (q)

把q的下乙個位址賦給r;

p的位址賦給q的下乙個位址;

q的位址賦給p的位址

r的位址賦給q;

直到q->next的位址為0就結束迴圈

其實鍊錶要自己多畫畫就直到怎麼回事了

15樓:天雲一號

q->next = p;  表示將節點p加入到節點q之後。

具體的意思可以參考如下的圖形表示:

節點q----->節點p

一般鍊錶的節點定義為:

struct node;

16樓:天地一孤鴻

把p(是指標,表示位址)賦給q的位址域。

17樓:匿名使用者

前面沒有說明r ,p,q是指向什麼的指標啊,後面就難猜了

c語言單鏈表中l->next = p 和 p = l->next的區別? 10

18樓:

l->next = p l->next指向p指向的節點。

p = l->next p指向l->next指向的節點。

在c語言鍊錶中 q->next=p; q=p;是什麼意思?是不是q=p後q節點就消失了?

19樓:1223永遠不棄

q->next = p;的意思是將p存放入q所指向的結點的指標域

q = p;q就指向了p所指的

q=p賦值語句後,q所指向的結點還是存在的,沒有q結點這一說法

c語言鍊錶排序問題,程式如下。t->next = p->next;p->next = q->next; q->next = t->next;是什麼意思?

20樓:匿名使用者

if (p->studentid > q->studentid) //當前p的id大於q的id,則交換兩個結點資料

21樓:匿名使用者

*t = *p;  //講p賦給t

*p = *q;  //講q賦給p

*q = *t;  //講t賦給q

//上面

三行就是交換p和q的,按你程式的意思,studentid更小的在前面,大的往後放。

//其實這個迴圈就是經典的氣泡排序原理。

t->next = p->next;  //將p的下乙個節點交給t的下乙個節點。

p->next = q->next;  //將q的下乙個節點交給p的下乙個節點。

q->next = t->next;  //將t的下乙個節點交給q的下乙個節點。

//這是交換p和q的下乙個節點,修改next值。

//結構體可以直接賦值的,也就是第乙個三行交換,不僅交換了數值studentid,應該也同時交換了next指標,所以後面三行其實是還原next指標的,否則上面的for迴圈,就換亂了。簡單的做法,應該可以直接交換studentid。就不需要考慮指標鏈結的順序了。

t->studentid = p->studentid;

p->studentid = q->studentid;

q->studentid = t->studentid;

//直接交換值studentid

關於c語言鍊錶的問題,關於C語言鍊錶的問題

slist是你定義的結構體的名稱,你寫的動態記憶體分配,意思是申請乙個指向slist的slist記憶體空間的指標,沒有這個名稱,就相當於乙個人沒了名字,幹什麼都不方便 slist就是nde的別名 因為你用到關鍵字typedef typedef是給型別取別名之意 如 typedef unsigned ...

C雙向鍊錶刪除操作,C語言編寫雙向鍊錶刪除

node tmpnode node next next free node next free了已經node next tmpnode 在這你又繼續使用了node next pre node 在這 你也使用了 所以 會出錯 在使用鍊錶的時候 要判斷他是否存在 不為空 再用 也就是進行安全性檢測 首先...

c語言問題,急急急!關於鍊錶的,c語言問題,急急急!關於鍊錶的!

include include typedef struct listlist list createlist int n return head list a b list a,list b 計算a b,計算結果儲存在a中 else if pa next null pa是表尾else 非表頭元素和...