//自定義的結點結構體和頭指標結構體:
[cpp]view plain
copy
#include
#include
#include
#include
typedef
intdatatype;
typedef
struct
linknode
linknode,*plinknode;//結點結構體
typedef
struct
linklist
linklist ,*plinklist;//鍊錶
//函式原型:plinknode findmidnode(plinklist plist);
/* 思路分析:要找的鍊錶的中間結點,我在這裡的解法用到的是快慢指標;定義兩個指標,都指向鍊錶的第乙個成員,然後快的指標每次走兩步,慢的指標每次走一步,當快指標指向的next為null即鍊錶結點為奇數個的時候,或者,快指標快指標自身為空的時候停下,即鍊錶元素為偶數個,此時的慢指標走了s步,則快指標走了2s步,則此時 慢指標所指向的結點為中間節點;
//這道題比較簡單,理解起來也容易,但是關於快慢指標的應用才是重點,後續的文章會講到鍊錶的帶環問題,會對快慢指標進行再次的應用,就比較難理解了!
//演算法**實現:
[cpp]view plain
copy
plinknode findmidnode(plinklist plist)
return
slow;
}
//自定義的結點結構體和頭指標結構體:
[cpp]view plain
copy
#include
#include
#include
#include
typedef
intdatatype;
typedef
struct
linknode
linknode,*plinknode;//結點結構體
typedef
struct
linklist
linklist ,*plinklist;//鍊錶
//函式原型:plinknode findmidnode(plinklist plist);
/* 思路分析:要找的鍊錶的中間結點,我在這裡的解法用到的是快慢指標;定義兩個指標,都指向鍊錶的第乙個成員,然後快的指標每次走兩步,慢的指標每次走一步,當快指標指向的next為null即鍊錶結點為奇數個的時候,或者,快指標快指標自身為空的時候停下,即鍊錶元素為偶數個,此時的慢指標走了s步,則快指標走了2s步,則此時 慢指標所指向的結點為中間節點;
//這道題比較簡單,理解起來也容易,但是關於快慢指標的應用才是重點,後續的文章會講到鍊錶的帶環問題,會對快慢指標進行再次的應用,就比較難理解了!
//演算法**實現:
[cpp]view plain
copy
plinknode findmidnode(plinklist plist)
return
slow;
}
帶頭節點的單鏈表
需要注意 include define maxlen 20 define elementtype char using namespace std typedef struct slnode node 函式宣告 void initiallist node l int listlength node ...
單鏈表操作(帶頭節點)
帶頭節點的單鏈表 include include typedef struct lnodenode linklist bool initlist linklist 初始化單鏈表 bool listinsert linklist int int 在指定位置插入資料 bool empty linklis...
帶頭節點單鏈表的操作
我們來看單鏈表的銷毀,排序,逆置 首先還是來看一下單鏈表的銷毀 我們能不能將單鏈表的操作像順序表一樣直接將他的size變成0然後直接釋放掉指向他的空間?void listdestory slist psl 我們知道鍊錶儲存資料最大的不同就是不是一段連續的空間,如果釋放鍊錶空間,需要釋放每乙個節點的空...