鍊錶總結1

2021-06-20 11:03:46 字數 732 閱讀 6859

//

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 ...