課程
/后端開發(fā)
/C++
/數(shù)據(jù)結(jié)構(gòu)探險之線性表篇
取元素時取i=m_iLength不就是取最后一個節(jié)點的元素嗎,為什么不可以?
2016-12-20
源自:數(shù)據(jù)結(jié)構(gòu)探險之線性表篇 3-7
正在回答
首先需要明確的是,鏈表和數(shù)組不同,鏈表不能通過下標 i 來直接獲取到 i 所對應(yīng)的結(jié)點,而是先要定義一個計數(shù)器在循環(huán)中數(shù)數(shù),通過結(jié)點的next一直遍歷到第 i 個結(jié)點,即當計數(shù)器的值等于 i 時。因此只能通過從頭結(jié)點開始遍歷的方式來找第 i 個結(jié)點 ,而不能通過 i 來直接獲取第 i 個結(jié)點。說的有點啰嗦。。。希望對你有幫助~
bool?List::GetElem(int?i,?Node?*pNode) { if(i?<?0?||?i?>=?m_iLength) ????return?false; Node?*currentNode?=?m_pList; for(int?k?=?0;?k?<?i;?k++) { currentNode?=?currentNode->next; } pNode->data?=?currentNode->data; return?true; }
當i=m_iLength時,currenNode已經(jīng)為尾節(jié)點指向NULL,而不是指向最后元素的節(jié)點;
所以要去取最后一個元素的應(yīng)該是 i = m_iLength-1;
if(i?<?0?||?i?>=?m_iLength)???? ????return?false;
所以這里判斷i是否是有效值,就應(yīng)不包括等號;
^.^Y
鏈表中每一個節(jié)點都是通過上一個節(jié)點的next指向,不同于數(shù)組通過下標就可以取得相應(yīng)元素!
所以取元素時i=m_iLength并不能取得最后一元素。
希望幫到你!^.^
qq_殘缺的懸念_04419689 提問者
舉報
線性表的主體順序表和鏈表,讓學員能夠?qū)⒅R融會貫通學以致用
1 回答沒有頭節(jié)點鏈表表頭和表尾的刪除則么刪?
1 回答請問,頭結(jié)點算鏈表的第一個節(jié)點么?計算鏈表的長度是否包含頭結(jié)點?在鏈表中間的第i位插入節(jié)點,這個i從哪里開始算起?是從頭結(jié)點之后的第一個節(jié)點算第0位然后一直數(shù)到第i位么?
2 回答數(shù)組中的元素有重復的,如何取位置
1 回答關(guān)于元素的位置
3 回答鏈表頭結(jié)點無意義?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2016-12-26
首先需要明確的是,鏈表和數(shù)組不同,鏈表不能通過下標 i 來直接獲取到 i 所對應(yīng)的結(jié)點,而是先要定義一個計數(shù)器在循環(huán)中數(shù)數(shù),通過結(jié)點的next一直遍歷到第 i 個結(jié)點,即當計數(shù)器的值等于 i 時。因此只能通過從頭結(jié)點開始遍歷的方式來找第 i 個結(jié)點 ,而不能通過 i 來直接獲取第 i 個結(jié)點。說的有點啰嗦。。。希望對你有幫助~
2016-12-21
當i=m_iLength時,currenNode已經(jīng)為尾節(jié)點指向NULL,而不是指向最后元素的節(jié)點;
所以要去取最后一個元素的應(yīng)該是 i = m_iLength-1;
所以這里判斷i是否是有效值,就應(yīng)不包括等號;
^.^Y
2016-12-20
鏈表中每一個節(jié)點都是通過上一個節(jié)點的next指向,不同于數(shù)組通過下標就可以取得相應(yīng)元素!
所以取元素時i=m_iLength并不能取得最后一元素。
希望幫到你!^.^