1、鍊錶的反轉
注意:1、輸入的煉表頭指標為null或者整個鍊錶只有乙個結點時
2、反轉後鍊錶會不會斷裂
3、返回的反轉之後的頭節點是否為原始鍊錶的尾節點
}2、鍊錶中環的入口結點
環中有4個節點,讓指標p1先走4步,然後指標p2和p1一起走,當p1走到入口節點,p2也與p1會相遇。
就相當於,我要走99步,只要你邁出一步,我補足那1步,我們就會相遇。
那麼如何求環中結點的數目,利用快慢指標,只要他們相遇一定是在環中,只需要,從相遇的節點遍歷,再次回到這個節點,我們便可知道節點的數量。
code:求環中結點的數量
node* count(pnode node)
return null;
}
code:求入口節點
node* findnode(pnode node)
node *fast=node ;
if(fast==null) return null;
for(int i=0;inext;
} node *slow=node;
while(fast!=slow)
return fast;
}
3、刪除鍊錶中重複的節點
code:
void deletep(node** node)
if(!delneed) //如果不需要,一直往下跑
else //如果需要,那麼判斷有沒有重複的數字
if(prev==null)
else
pnode=pnext;
}} }
鏈表面試題
不改變鍊錶結構,從尾到頭列印單鏈表 遞迴實現 void printlistrevers recursively plist phead printf d phead data 當鍊表非常長的時候,遞迴實現的會導致函式呼叫層級很深,可能導致呼叫棧溢位。用棧不會出現此類情況,顯然用棧實現 的魯棒性會好一...
鏈表面試題
從尾到頭列印單鏈表 棧 遞迴 從尾到頭列印鍊錶 includevoid printtailtohead listnode head while s.empty 空間複雜度o n void printtailtoheadr listnode head cout data 刪除乙個無頭單鏈表的非尾結點 ...
鏈表面試題
typedef int datatype typedef struct node node,pnode,plist void initlist plist pplist void display const plist plist void pushback plist pplist,datatyp...