//
1.給定乙個鍊錶的頭指標,在一次遍歷中,找出這個鍊錶中的中間節點並返回。
//基本思想: 設立兩個指標,比如*p和*q。p每次移動兩個位置,而q每次移動乙個位置,當p到達最後乙個節點時,q就是中間節點了。
//2.查詢鍊錶中倒數第k個節點
//基本思想: 兩個指標,保持距離k
//3.怎麼判斷鍊錶中是否有環?
//基本思想: 與5相似,若p能追上q,則有環,否則無環。
///*
#include
#include
#include
struct node
;int return_middle(struct node* head)//返回鍊錶的中間節點
return q->n;
}int return_k(struct node* head,int k)//查詢鍊錶中倒數第k個節點
while(p)
return q->n;
}bool remark(struct node* head)//判斷鍊錶中是否有環?
return false;
}struct node *creatnode(int n)//建立鍊錶
if(n<1)
else
return head;
}void prin(struct node* head)//列印鍊錶
cout<}void main()
//*/
鍊錶1 單向鍊錶
鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...
鍊錶 鍊錶環問題總結
給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?1 如何判斷是否存在環?對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 如不存在環,fast遇到n...
學生鍊錶1
include include define null 0 define len sizeof struct student struct student int n struct student creat p2 next null return head out void print head ...