数据结构|利用快慢指针求链表的中值

【数据结构|利用快慢指针求链表的中值】思想:慢指针slow遍历链表,faster指针速度是slow的两倍,则当快指针到达链表结尾时(next节点为空),此时slow指针应该位于链表的中间(链表元素个数是奇数时正中间,偶数应该是一半加1)。
package mainimport ( "math/rand" "time" "fmt" )func main() { p:=Initlist(10) Traverse(p) data,index:=Middle(p) fmt.Printf("中值:%d,位置在%d",data,index) } //节点定义 type pnode struct { data int next *pnode } //初始化长度为n的链表 func Initlist(n int)*pnode{ rand.Seed(time.Now().UnixNano()) pFirst:=&pnode{data:rand.Intn(2n)} pLast:=&pnode{data:rand.Intn(2n)} pFirst.next=pLast for i:=0; i

性能表现: 时间复杂度:O(n) 空间复杂度:O(1)

    推荐阅读