牛客網 鍊錶問題 C 實現 刷題彙總

2021-10-25 06:34:35 字數 2071 閱讀 8180

/*

* struct listnode

};*/

class solution

//判斷鍊錶有無環,有則返回第乙個進入環的節點

listnode* getloopnode(listnode *head)

fast=head;//fast重新指向head

while (slow!=fast)

return slow;

}//判定兩個無環鏈表是否相交,相交則返回第乙個相交頂點

listnode* noloop(listnode *head1,listnode *head2)

while (cur2->next!=null)

if(cur1!=cur2)

return null;//end1!=end2,說明兩個鍊錶不相交,直接返回null

cur1=n>0?head1:head2;//n>0說明第一條鍊錶長

cur2=cur1==head1?head2:head1;

n=n>0?n:-n;

while (n!=0)

while (cur1!=cur2)

return cur1;

}//判斷兩個有環鏈表是否相交,相交則返回乙個相交節點

listnode* bothloop(listnode *head1,listnode *loop1,listnode *head2,listnode *loop2)

while (cur2!=loop2)

cur1=n>0?head1:head2;

cur2=cur1==head1?head2:head1;

n=n>0?n:-n;

while (n!=0)

while (cur1!=cur2)

return cur1;

}else

return null;}}

};

class solution

cur=temp;

}return newhead;

}//第一種方法輔助函式,實現元素逆序

listnode* resign1(stack&stack,listnode *left,listnode *right)

cur->next=right;//與右邊下一段相連

return cur;

}//不利用棧結構,在原煉表中直接調整

listnode* reverseknode2(listnode *head,int k)

count++;

cur=temp;

}return head;

}//變數記錄每組的開始和結束節點,以及上組最後乙個節點left,下一組開始節點right

void resign2(listnode *left,listnode *start,listnode *end,listnode *right)

if(left!=null)//連線前後兩段

left->next=end;

start->next=right;

}};

class solution

cur=cur->next;

}return head;

}//類似選擇排序,時間複雜度o(n**2),空間複雜度o(1)

listnode* removerep2(listnode *head)

cur=cur->next;

}return head;

}};

class solution

//上述while結束後head為null

while (!stack.empty())

return head;

}//第二種方法直接刪除

listnode* removevalue2(listnode *head,int num)

listnode *pre=head;

listnode *cur=head->next;

while (cur!=null)

return head;

}};

牛客網刷題 重排鍊錶

將給定的單鏈表 l l0 l1 l ln 重新排序為 l0 ln l1 l l2 l l 要求使用原地演算法,不能改變節點內部的值,需要對實際的節點進行交換。輸入 輸出 線性表 因為鍊錶沒有下表,我們可以現將鍊錶遍歷一遍,儲存到線性表中,然後再重排序 鍊錶中點 鍊錶逆序 合併鍊錶 先查詢鍊錶的中點,...

牛客網刷題之複雜鍊錶

題目描述 現在有乙個這樣的鍊錶 鍊錶的每乙個節點都附加了乙個隨機指標,隨機指標可能指向鍊錶中的任意乙個節點或者指向空。請對這個鍊錶進行深拷貝。題目分析 public class solution 當前節點指向複雜鍊錶的頭結點 randomlistnode curnode head 賦值原始鍊錶,並將...

牛客網C 刷題

今天刷了些c 的題,就其中物件導向分享一下我的感悟。首先區分一下物件導向和面向過程 物件導向是首先抽象出各種物件 各種類 把資料和方法都封裝在物件中 類 然後各個物件之間發生相互作用。面向過程是將問題分解成若干步驟 動作 每個步驟 動作 用乙個函式來實現,在使用的時候,將資料傳遞給這些函式。stl有...