獲取單鏈表倒數第k個結點
實現將單鏈表反轉
實現單鏈表的逆序列印
備註對帶頭結點的單鏈表不太了解的可以參考[資料結構]-帶頭結點的單鏈表.本篇主要內容包括在之前的基礎上新增一些高階方法:統計單鏈表中有效元素個數,如何獲得單鏈表中倒數第k個結點,如何實現單鏈表的逆序,如何實現單鏈表結點的逆序列印。
通過輔助指標遍歷整個鍊錶,每訪問乙個結點則將統計的個數值加1,直到遍歷到鍊錶的結尾為止
//get valid size of linkedlist
public
static
intgetlength
(node head)
return length;
}
可以首先獲得整個鍊錶的總長度size,然後再從前往後遍歷單鏈表,找到size-k個位置即可
// get lastindexnode
public
static node getlastindexnode
(node head,
int index)
return tmp;
}
可以首先初始化乙個反轉鍊錶的頭結點,然後依次遍歷原始鍊錶,將獲取的元素採用頭插法插入到反轉鍊錶的頭結點後面,最終將原始鍊錶的頭結點指向反轉鍊錶的頭結點的next域即可
public
static
void
reverselist
(node head)
node reversehead =
newnode(0
,"");
node tmp = head.next;
node next = null;
while
(tmp != null)
head.next = reversehead.next;
}
1、可以考慮首先將原始的單鏈表反轉,然後順序遍歷該鍊錶即可,缺點是這種方式將會改變原始的鍊錶結構
2、可以使用棧來輔助實現,從前向後遍歷訪問單鏈表的結點,每訪問乙個則將其入棧,待所有結點均在棧內之後,實現出棧即可
public
static
void
reverseprint
(node head)
stack
stack =
newstack
(); node tmp = head.next;
while
(tmp != null)
while
(stack.
size()
>0)
}
完整的帶頭結點的單鏈錶類實現參考[資料結構]-帶頭結點的單鏈表,只需將以上實現的**新增到單鏈錶類的成員方法中,並且將單鏈錶類中的head屬性型別改變為public型別以便測試時可以直接訪問到頭結點。 資料結構 帶頭結點的單鏈表
比較坑爹的基礎啊,大把時間浪費在建構函式上,建構函式 出生決定命運!自己解決的bug,感覺還不錯。其實程式的核心是演算法,演算法建立在資料結構的基礎之上。大部分的程式設計師現在學的基本都是規則,而不是創造。但掌握了規則,也能創造很多財富。重新鞏固我弱爆了的資料結構,沒敲完資料結構的程式設計師不是好領...
資料結構 單鏈表(帶頭結點)
單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。簡單講就是邏輯相鄰,物理不相鄰 帶頭結點 list.h prag...
資料結構 單鏈表 帶頭結點和不帶頭結點
1 單鏈表 通過各結點的鏈結指標來表示結點間的邏輯關係,長度可擴充,遍歷或查詢 2 只能從指標的指示的首元結點開始,跟隨鏈結指標逐個結點進行訪問,進行刪除或插 4 5 6 單鏈表的結構定義 7 typedef int datatype 8 typedef struct node 9 linknode...