連結串列面試題(四)---查詢連結串列的中間節點
一、結構體定義:
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;
}
相關文章
- 連結串列面試題(二)---連結串列逆序(連結串列反轉)面試題
- 連結串列專題——面試中常見的連結串列問題面試
- 複習下C 連結串列操作(雙向迴圈連結串列,查詢迴圈節點)
- 連結串列面試題(十一)---求帶環單連結串列 環的入口點面試題
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- (連結串列)連結串列的排序問題排序
- 連結串列面試題(十三)---求兩個都不帶環的連結串列相交的結點面試題
- 連結串列面試題(六)---刪除單連結串列倒數第k個結點面試題
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 連結串列面試題(七)---合併兩個有序連結串列面試題
- 連結串列面試題(五)---尋找連結串列的倒數第k個結點O(N)面試題
- 連結串列面試題(一)---刪除一個無頭單連結串列的非尾結點面試題
- Redis筆記 — 連結串列和連結串列節點的API函式(三)Redis筆記API函式
- 【連結串列問題】打卡8:複製含有隨機指標節點的連結串列隨機指標
- 雙向連結串列————查詢、刪除、插入結點
- c 連結串列之 快慢指標 查詢迴圈節點指標
- 利用快慢指標快速得到連結串列中間節點指標
- javascript中的連結串列結構—雙向連結串列JavaScript
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- Java連結串列指標確實好煩 - 交換連結串列中連續的兩個節點的位置Java指標
- 連結串列面試題(九)---判斷一個連結串列是否帶環面試題
- 連結串列面試題(十)---求帶環單連結串列的環的長度面試題
- 輕鬆搞定面試中的連結串列題目面試
- [連結串列]leetcode1019-連結串列中的下一個更大節點LeetCode
- 帶頭結點的連結串列操作題
- LeetCode每日一題:連結串列的中間結點(No.876)LeetCode每日一題
- 結點插入到單連結串列中
- 連結串列4: 迴圈連結串列
- 單向迴圈連結串列——查詢、刪除、插入結點
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- 連結串列面試題(十二)---判斷兩個都不帶環的連結串列是否相交面試題
- 程式碼隨想錄演算法訓練營第四天 | 連結串列 24.兩兩交換連結串列中的節點 19.刪除連結串列的倒數第N個節點 142.環形連結串列II演算法
- 資料結構-單連結串列查詢按序號查詢資料結構
- 定義一個函式,輸入一個連結串列的頭節點,反轉該連結串列並輸出反轉後連結串列的頭節點函式
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 04天【程式碼隨想錄演算法訓練營34期】 第二章 連結串列part02 (● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II )演算法面試題
- leetcode----刪除連結串列中的節點LeetCode