那么A->next=A->next->next;(刪除B結(jié)點(diǎn),這里我想問問,是不是這兒一定要加個(gè)free(B)才算刪除B結(jié)點(diǎn)?)
首先 A->next =A->next->next意思只是將A的指針指向C 不是說 刪除B B在內(nèi)存中還是存在的 只是和A C失去了前后繼的關(guān)系用free 來釋放B節(jié)點(diǎn)
而后面的p=p->next 不是刪除節(jié)點(diǎn),而是使得指針p向后移動 明白嗎
關(guān)于數(shù)據(jù)結(jié)構(gòu)線性鏈表中的指針后移和刪除結(jié)點(diǎn)的疑問
關(guān)于數(shù)據(jù)結(jié)構(gòu)線性鏈表中的指針后移和刪除結(jié)點(diǎn)的疑問
我想問問指針后移和刪除元素是不是一回事?
比如在線性鏈表中有三個(gè)結(jié)點(diǎn)A、B、C
A指向B,B指向C
那么A->next=A->next->next;(刪除B結(jié)點(diǎn),這里我想問問,是不是這兒一定要加個(gè)free(B)才算刪除B結(jié)點(diǎn)?)
與B=B->next;(指針后移)
是不是都是一回事,把B結(jié)點(diǎn)刪除了.
假如是一回事的話,那么算法
Status Insert(LinkList &L,int i,int b)//在無頭結(jié)點(diǎn)鏈表L的第i個(gè)元素之前插入元素b
{
p=L;
q=(LinkList*)malloc(sizeof(LNode));
q.data=b;
if(i==1)
{
q->next=p;
L=q; //插入在鏈表頭部
}
else
{
while(--i>1)
p=p->next;
q->next=p->next;
p->next=q; //插入
}
}//Insert
里面的
while(--i>1)
p=p->next;
實(shí)際上也就是在一直刪除結(jié)點(diǎn)咯?
那不就是做了多余的事情嗎?要求的只是“在無頭結(jié)點(diǎn)鏈表L的第i個(gè)元素之前插入元素b”,可結(jié)果插入是插入了,卻刪除了許多的結(jié)點(diǎn).
十分不解,期待回答.(是在沒分了,想給也給不了.)
是不是這樣一回事
A->next是存儲了結(jié)點(diǎn)A的后繼結(jié)點(diǎn)的位置.
那么 A->next =A->next->next的意思就是改變了這個(gè)位置,A的后繼結(jié)點(diǎn)變成了C.
而B=B->next,就是讓指針B指向了B的后繼結(jié)點(diǎn),但因?yàn)锳的指針域無變化,所以B仍然是A的后繼結(jié)點(diǎn).
最后我還想問個(gè)問題,兩個(gè)結(jié)點(diǎn)之間比如一個(gè)結(jié)點(diǎn)A和B,只要A->next所儲存的是B的位置,無論有沒有指針指向B,B就是A的后繼結(jié)點(diǎn).
我想問問指針后移和刪除元素是不是一回事?
比如在線性鏈表中有三個(gè)結(jié)點(diǎn)A、B、C
A指向B,B指向C
那么A->next=A->next->next;(刪除B結(jié)點(diǎn),這里我想問問,是不是這兒一定要加個(gè)free(B)才算刪除B結(jié)點(diǎn)?)
與B=B->next;(指針后移)
是不是都是一回事,把B結(jié)點(diǎn)刪除了.
假如是一回事的話,那么算法
Status Insert(LinkList &L,int i,int b)//在無頭結(jié)點(diǎn)鏈表L的第i個(gè)元素之前插入元素b
{
p=L;
q=(LinkList*)malloc(sizeof(LNode));
q.data=b;
if(i==1)
{
q->next=p;
L=q; //插入在鏈表頭部
}
else
{
while(--i>1)
p=p->next;
q->next=p->next;
p->next=q; //插入
}
}//Insert
里面的
while(--i>1)
p=p->next;
實(shí)際上也就是在一直刪除結(jié)點(diǎn)咯?
那不就是做了多余的事情嗎?要求的只是“在無頭結(jié)點(diǎn)鏈表L的第i個(gè)元素之前插入元素b”,可結(jié)果插入是插入了,卻刪除了許多的結(jié)點(diǎn).
十分不解,期待回答.(是在沒分了,想給也給不了.)
是不是這樣一回事
A->next是存儲了結(jié)點(diǎn)A的后繼結(jié)點(diǎn)的位置.
那么 A->next =A->next->next的意思就是改變了這個(gè)位置,A的后繼結(jié)點(diǎn)變成了C.
而B=B->next,就是讓指針B指向了B的后繼結(jié)點(diǎn),但因?yàn)锳的指針域無變化,所以B仍然是A的后繼結(jié)點(diǎn).
最后我還想問個(gè)問題,兩個(gè)結(jié)點(diǎn)之間比如一個(gè)結(jié)點(diǎn)A和B,只要A->next所儲存的是B的位置,無論有沒有指針指向B,B就是A的后繼結(jié)點(diǎn).
其他人氣:208 ℃時(shí)間:2020-03-30 07:40:18
優(yōu)質(zhì)解答
我來回答
類似推薦
- 非常感謝您上次回答了我的數(shù)據(jù)結(jié)構(gòu)的指針問題,現(xiàn)在在看書,又有點(diǎn)疑問.
- 數(shù)據(jù)結(jié)構(gòu)問題 已知指針ha和hb分別指向兩個(gè)單鏈表的頭結(jié)點(diǎn),并且已知兩個(gè)鏈表的長度分別為m和n.試
- 150℃時(shí)若只有一半碳酸銨分解,產(chǎn)生的氣態(tài)混合物的密度是相同條件下氫氣密度的多少倍?
- 用天平稱一只雞蛋,但是把位置放錯(cuò)了,錯(cuò)誤的讀數(shù)是50、4克,這個(gè)雞蛋正確的質(zhì)量是多少克
- 蟬 結(jié)尾一句話在文中起什么作用?
- 0.3mol的O2與0.2mol的O3混合,混合氣體的密度對氫氣的相對密度是多少?
- (1+x)(2-x)(x2-2x-7)>0解不等式
- 有甲乙兩瓶油,甲瓶油的重量是乙瓶油1.8倍‘如果從甲瓶里倒出1.6千克,兩瓶油就相
- it was 劃線 a caterpillar
- 在三棱錐S-ABC中,SA=SB=SC=1,∠ASB=∠ASC=∠BSC=30°,如圖,一只螞蟻從點(diǎn)A出發(fā)沿三棱錐的表面爬行一周后又回到A點(diǎn),則螞蟻爬過的最短路程為_.
- 是把焦距調(diào)到20MM吧?調(diào)到20MM是放大了還是縮小了啊?
- 根號108,根號0.25分別得多少
猜你喜歡
- 1Danny的名詞所有格
- 2“孟母三遷”這則故事可以用什么成語來說理?
- 3畫出定義域?yàn)閧x|-3≤x≤8,且x≠5},值域?yàn)閧y|-1≤y≤2,y≠0}的一個(gè)函數(shù)的圖象.如果平面直角坐標(biāo)系中點(diǎn)P(x,y)的坐標(biāo)滿足-3≤x≤8,-1≤y≤2,那么其中哪些點(diǎn)不能在圖象上?
- 4食鹽的溶解快慢與水的溫度是否有關(guān)的設(shè)計(jì)方案
- 5水的離子積為什么只和溫度相關(guān)
- 6橢圓x²/16+y²/12=1的離心率為
- 7水表的五位數(shù)代表什么,這水表的讀數(shù)是多少?
- 812?+2=90 12?+2=144 加 減 乘除 或括號 使等式成立
- 9竊讀記哪里寫作者如饑似可讀書
- 10即公大兄無奕女,左將軍王凝之妻也是什么句式
- 11當(dāng)半徑一定時(shí),同一行星的衛(wèi)星的線速度也一定嗎?
- 12英語翻譯