連結串列面試題(四)---查詢連結串列的中間節點
一、結構體定義:
typedef int DataType;
typedef struct ListNode//定義結點
{
DataType data;
struct ListNode* next;
}ListNode,*PListNode;
typedef struct PList//定義一個成員是指向結點的指標的結構體
{
PListNode PHead;
}PList,*PList;
二、函式實現:
方法一:方法1(計數法)—遍歷兩遍
//4.查詢連結串列的中間節點---方法1(計數法)---遍歷兩遍
PListNode FindMidNode1(PList PList)
{
int count=0;
int mid=0;
PListNode cur;
assert(PList);
cur=PList->PHead;
if (PList->PHead==NULL||PList->PHead->next==NULL)//如果連結串列為空或者連結串列只有一個結點
{
return PList->PHead;//返回第一個結點(空||結點)
}
else//連結串列結點超過一個
{
while (cur)
{
count++;
cur=cur->next;
}
printf("連結串列結點個數為:%d",count);
mid=count/2;
cur=PList->PHead;
while (mid)
{
mid--;
cur=cur->next;
}
return cur;
}
}
方法二:方法2(快慢指標法)—遍歷一遍
思路:慢指標每一次走一步,快指標每次走兩步,快指標走到尾時,慢指標正好走到中間
//4查詢單連結串列的中間節點---方法2(快慢指標法)---遍歷一遍
PListNode FindMidNode2(PList PList)
{
PListNode fast=NULL;
PListNode slow=NULL;
assert(PList);
fast=PList->PHead;
slow=PList->PHead;
while (fast!=NULL&&fast->next!=NULL)//防止對空指標的訪問操作
{
fast=fast->next->next;
slow=slow->next;
}
return slow;
}
相關文章
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列專題——面試中常見的連結串列問題面試
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- 複習下C 連結串列操作(雙向迴圈連結串列,查詢迴圈節點)
- 第四天:● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II面試題
- 876. 連結串列的中間結點
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- (連結串列)連結串列的排序問題排序
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點面試題
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 雙向連結串列————查詢、刪除、插入結點
- c 連結串列之 快慢指標 查詢迴圈節點指標
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- 利用快慢指標快速得到連結串列中間節點指標
- javascript中的連結串列結構—雙向連結串列JavaScript
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- Java連結串列指標確實好煩 - 交換連結串列中連續的兩個節點的位置Java指標
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- 連結串列-雙向連結串列
- 連結串列-迴圈連結串列
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 程式碼隨想錄第4天 | 24. 兩兩交換連結串列中的節點、19.刪除連結串列的倒數第N個節點、面試題 02.07. 連結串列相交、142.環形連結串列II面試題
- 輕鬆搞定面試中的連結串列題目面試
- [連結串列]leetcode1019-連結串列中的下一個更大節點LeetCode
- 帶頭結點的連結串列操作題
- K個節點翻轉連結串列
- 雙向連結串列 尾節點插入
- LeetCode每日一題:連結串列的中間結點(No.876)LeetCode每日一題
- 結點插入到單連結串列中