// 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 如果是雙向鍊錶,可以首尾並行,利用兩個指標乙個從頭到尾,乙個從尾到頭,當兩個指標相遇的時候,就找到中...