連結串列面試題(四)---查詢連結串列的中間節點
一、結構體定義:
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;
}
相關文章
- 【連結串列問題】刪除單連結串列的中間節點
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- 連結串列專題——面試中常見的連結串列問題面試
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- 第四天:● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- [連結串列]leetcode1019-連結串列中的下一個更大節點LeetCode
- 876. 連結串列的中間結點
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 【連結串列問題】打卡2:刪除單連結串列的第 K個節點
- 特定深度節點連結串列
- 程式碼隨想錄第4天 | 24. 兩兩交換連結串列中的節點、19.刪除連結串列的倒數第N個節點、面試題 02.07. 連結串列相交、142.環形連結串列II面試題
- 雙向連結串列————查詢、刪除、插入結點
- LeetCode每日一題:連結串列的中間結點(No.876)LeetCode每日一題
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- 2024/11/27 【連結串列】LeetCode 24 兩兩交換連結串列中的節點 & LeetCode 19 刪除連結串列的倒數第N個節點LeetCode
- leetcode----刪除連結串列中的節點LeetCode
- 程式碼隨想錄演算法訓練營day04|24.兩兩交換連結串列中的節點,19.刪除連結串列的倒數第N個節點,面試題 02.07.連結串列相交,142.環形連結串列II演算法面試題
- 連結串列中環的入口結點
- 連結串列 - 單向連結串列
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 搞懂單連結串列常見面試題面試題
- 單連結串列建立連結串列出現問題
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- 單向迴圈連結串列——查詢、刪除、插入結點
- K個節點翻轉連結串列
- 雙向連結串列 尾節點插入
- C++連結串列常見面試考點C++面試
- Leetcode刷題之連結串列增加頭結點的字首節點LeetCode
- 連結串列4: 迴圈連結串列
- 連結串列-雙向通用連結串列