在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
生活随笔
收集整理的這篇文章主要介紹了
在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
時間:2014.04.26
地點:基地
—————————————————————————
一、題目
? 題目是非常easy和基礎,就是在單鏈表的第i個位置后插入一個節點。要求寫代碼,5分鐘之內完畢。面騰訊和阿里的同學都有面到,于是總結幾個技巧。這樣的限時寫代碼往往一緊張盡管特基礎但稍加不注意也非常容易出錯。
—————————————————————————
二、分析
? 1.先依照一般的步驟,我們要得到第鏈表第i個位置的指針。
? 2.然后再在剛剛得到的指針之后插入新節點
Node* ListLocate(Node* head_ptr,size_t position) {Node* curosr=nullptr;for(size_t i=1;(i<position)&&(cursor!=nullptr);++i)cursor=cursor->get_link();return cursor; } const Node* ListLocate(const Node* head_ptr,size_t position) {const Node* curosr=nullptr;for(size_t i=1;(i<position)&&(cursor!=nullptr);++i)cursor=cursor->get_link();return cursor; } void ListInsert(Node* previous_ptr;const Node::value_type& entry) { Node* insert_ptr=new Node(entry,previous_ptr->get_link());previous_ptr=insert_ptr; }—————————————————————————
三、總結
? 這里獲得第i個位置的指針寫了兩個版本號,即為提供通用性,當然這里對于題目要求的是多余的,由于題目要求是肯定要通過指針改動鏈表。個人比較喜歡固定一種模式,即經常使用的代碼編寫模式,假設算法實現原理是一樣的,僅僅是在代碼的表現上有所差別,我認為就不是必需花心思耍花樣。今天用cursor遍歷鏈表,明天用list_ptr遍歷鏈表,往后也不easy出錯。
在鏈表的實現中比方還可提煉幾種編碼規范:
1.使用cursor遍歷鏈表指針
for(Node* head_ptr;cursor!=nullptr;cursor=curosr->get_link()) {....... }
2.提供兩個版本號的編號定位節點的函數或者匹配定位節點的函數
轉載于:https://www.cnblogs.com/yxwkf/p/5417867.html
總結
以上是生活随笔為你收集整理的在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HQL的使用和limit的替代
- 下一篇: 实验6 在应用程序中播放音频和视频