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