計算並得到新的頭節點之前的那個節點
node=node->next;
if(node->next==null)//
若這個節點是原尾節點,直接返回原陣列
return
head;
listnode* new_head=node->next;//
若不是,幹三件事,第一得到新的頭結點
node->next=null;//
第二把新頭結點前的節點的next賦null
node=new_head;
while(node->next!=null)//
第三把原尾節點的next由null改為原頭結點
node=node->next;
node->next=head;
return
new_head;}};
分析:這個演算法時間複雜度,因為只是遍歷兩遍鍊錶,理論上是o(n),為了得到鍊錶長度多遍歷一遍,想了半天也沒有其他的路子,後來想想相比一點點挪應該是快的吧。
寫的時候有兩個關鍵地方第一時間都沒想到,第一是新節點的計算,由於舉得案例不全,也巧合,導致我一開始寫的不對。第二是沒注意到新的節點就是頭結點的情況,因為我這個演算法最後面還有while迴圈,所以沒有考慮到這個情況的時候,這個是死迴圈。
今天真的不能再做了,太累了。
《劍指Offer》題六十一 題六十八
六十 一 撲克牌中的順子 題目 從撲克牌中隨機抽5張牌,判斷是不是乙個順子,即這5張牌是不是連續的。2 10為數字本身,a為1,j為11,q為12,k為13,而大 小王可以看成任意數字。六十二 圓圈中最後剩下的數字 題目 0,1,n 1這n個數字排成乙個圓圈,從數字0開始,每次從這個圓圈裡刪除第m個...
第六十一題(找出陣列中兩個僅僅出現一次的數字)
題目 乙個整型陣列裡除了兩個數字之外,其它的數字都出現了兩次。請敲 找出這兩個僅僅出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 思路 先對全部資料進行異或得到結果result,兩兩同樣的資料異或結果為0。因此result為兩個僅僅出現1次的數字異或的結果,求得result左邊第乙個值為...
第六十一課 智慧型指標類模板 狄泰軟體學院
一 智慧型指標的意義 現代c 開發庫中最重要的類模板之一 c 中自動記憶體管理的主要手段 能夠在很大程度上避開記憶體相關的問題 stl中的智慧型指標auto ptr 生命週期結束時,銷毀指向的記憶體空間 不能指向堆陣列,只能指向堆物件 變數 一片堆空間只屬於乙個智慧型指標物件 多個智慧型指標物件不能...