快慢指標尋找單鏈表中間值

2021-09-12 21:48:05 字數 663 閱讀 3332

// fastsearch.cpp : 鍊錶快速查詢中間值,快慢指標的方法

#include "stdafx.h"

#include struct linklist

;linklist *head = (linklist*)malloc(sizeof(linklist));

//初始化鍊錶(尾插法)

void listinitial()

}linklist* p2 = new linklist;

//初始化鍊錶(頭插法)

void listinitial_2()

}//尾插法列印鍊錶

bool printlinklist()

while (p->next!=null)

return true;

}//頭插法列印鍊錶

bool printlinklist_2()

while (p2->next != null)

return true;

}//快速查詢中間值,快慢指標的方法

void middata()

else

i++;

} printf("中間值是a[%d]=%d\n",i, data->data);

}int main()

鍊錶 尋找中間結點(快慢指標法)

一般方法 鍊錶這種無法隨機訪問的資料結構,要定位到中間結點的方法通常是先把整個鍊錶遍歷一遍,得到整個鍊錶的長度,再除以2,得到中間結點的位置,接著根據這個位置從頭結點開始找到這個結點,時間複雜度為o 1.5n 具體 如下 definition for singly linked list.struc...

利用快慢指標尋找鍊錶中間節點

876.鍊錶的中間結點 這道題要求我們找到鍊錶中的中間位置,首先想到第一種方法,使用兩個指標,乙個從頭遍歷到尾部確定長度,乙個從頭遍歷到相應位置。那麼有沒有一遍遍歷就能解決的?那麼我們想到快慢指標,因為快慢指標往往可以做到一遍遍歷,在慢指標處找到答案 做法 慢指標走一步,快指標走兩步。這樣快指標到末...

尋找單鏈表的中間節點

思路 1 首先求解單鏈表的長度length,然後遍歷 length 2 的距離即可查到單鏈表的中間節點,但一般此種方法需要遍歷兩次鍊錶,第一次遍歷求解單鏈表的長度,第二次遍歷根據索引獲取中間節點。2 如果是雙向鍊錶,可以首尾並行,利用兩個指標乙個從頭到尾,乙個從尾到頭,當兩個指標相遇的時候,就找到中...