給定乙個單鏈表的頭節點 head,實現乙個調整單鏈表的函式,使得每k個節點之間為一組進行逆序,並且從鍊錶的尾部開始組起,頭部剩餘節點數量不夠一組的不需要逆序。(不能使用佇列或者棧作為輔助)
例如:鍊錶:1->2->3->4->5->6->7->8->null, k = 3。那麼 6->7->8,3->4->5,1->2各位一組。調整後:1->2->5->4->3->8->7->6->null。其中 1,2不調整,因為不夠一組。
local t =
local tt = t;
local max = 8;
while(max > 0) do
local t2 =
tt.next = t2;
tt = t2;
max = max -1;
end
function reverttable( tab,limit )
-- 遞迴拆分子鏈
local temphead = nil;
local temphead2 = nil;
local tempk = 0
function revertsub(nextnode,fathernode)
if nextnode == nil then
return
end
revertsub(nextnode.next,nextnode)
tempk = tempk +1;
-- print(nextnode.data,tempk);
if tempk == limit then
nextnode.next = temphead2
temphead2 = temphead
temphead = nil ;
tempk = 0
elseif tempk == 1 then
temphead = nextnode
nextnode.next = fathernode
else
nextnode.next = fathernode
end
endrevertsub(tab,nil)
if temphead ~= nil then
print('**********')
local max = 10
local tempnext = temphead.next
local tempnext2 = nil
temphead.next = temphead2;
while tempnext and max > 0 do
max = max - 1;
print('2222*****== ',temphead.data)
tempnext2 = tempnext.next
tempnext.next = temphead
temphead = tempnext;
tempnext = tempnext2
end
else
temphead = temphead2
end
return temphead
endlocal head = reverttable(t,3);
local k = 20
while(head and k > 0)
do k = k -1;
print(head.data);
head = head.next;
end
變形的鍊錶反轉
給定乙個單鏈表的頭節點 head,實現乙個調整單鏈表的函式,使得每k個節點之間為一組進行逆序,並且從鍊錶的尾部開始組起,頭部剩餘節點數量不夠一組的不需要逆序。不能使用佇列或者棧作為輔助 例如 鍊錶 1 2 3 4 5 6 7 8 null,k 3。那麼 6 7 8,3 4 5,1 2各位一組。調整後...
鍊錶題目一道
原題鏈結 題意很簡單。給定乙個單鏈表,反轉這個單鏈表,返回翻轉後的頭節點。要將鍊錶翻轉,很容易想到借助棧的後進先出的性質來改變鍊錶的順序。將鍊錶節點順序壓入棧中,鍊錶節點全部進棧以後,取棧頂元素作為新鍊錶的頭節點,然後將元素不斷出棧,每齣棧乙個元素就連線到新鍊錶的末尾。時間複雜度 將鍊錶元素壓入棧中...
鍊錶的游標實現 一道演算法題
輸入包含多組資料。每組資料佔一行,包含不超過100000個字母 下劃線 字元 或 者 其中字元 表示home鍵,表示end鍵。輸入結束標誌為檔案結束符 eof 輸 入檔案不超過5mb。對於每組資料,輸出一行,即螢幕上的悲劇文字。樣例輸入 this is a beiju text 樣例輸出 beiju...