日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在单链表的第i个位置后插入一个节点(阿里+腾讯等面试题总结)

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在单链表的第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个位置后插入一个节点(阿里+腾讯等面试题总结)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。