1. 程式人生 > >1025 反轉連結串列 Python實現

1025 反轉連結串列 Python實現

1025 反轉連結串列 (25)(25 分)

給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。

輸入格式:

每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的地址、結點總個數正整數N(<= 10^5^)、以及正整數K(<=N),即要求反轉的子鏈結點的個數。結點的地址是5位非負整數,NULL地址用-1表示。

接下來有N行,每行格式為:

Address Data Next

其中Address是結點地址,Data

是該結點儲存的整數資料,Next是下一結點的地址。

輸出格式:

對每個測試用例,順序輸出反轉後的連結串列,其上每個結點佔一行,格式與輸入相同。

輸入樣例:

00100 6 4
00000 4 99999
00100 1 12309
68237 6 -1
33218 3 00000
99999 5 68237
12309 2 33218

輸出樣例:

00000 4 33218
33218 3 12309
12309 2 00100
00100 1 99999
99999 5 68237
68237 6 -1

 問題分析:

     該題是一道連結串列操作問題,可以建立類表示結點。我直接使用列表裝資料,列表元素的排列順序表示鏈結構。注意最 後一個元素的next(下個結點地址)為-1。測試結果倒數第二項超時,這已經不是第一次遇見超時了。這道題的從方法到程式結構都有很大改進空間,但是本博主十分懶惰(不想改了),所以有什麼高明的改進,可以在評論中解答一下。

程式(有超時):

a = input().split()
b = []
for i in range(int(a[1])):
    b.append(input().split())
x = []
for i in b:
    if i[0]==a[0]:
        x.append(i)
while x[-1][2]!='-1':
    for i in b:
        if i[0]==x[-1][2]:
            x.append(i)
m = []
i = 0
while i<int(a[1]):
    m.append(x[i:i+int(a[2])])
    i+=int(a[2])
for i in m:
    if len(i)<int(a[2]):
        break
    else:
        i.reverse()
        j = 0
        while j<int(a[2])-1:
            i[j][2]=i[j+1][0]
            j+=1
for i in range(len(m)-1):
    m[i][-1][2]=m[i+1][0][0]
if len(m[-1])==int(a[2]):
    m[-1][int(a[2])-1][2]='-1'
for i in m:
    for j in i:
        print("%s %s %s"%(j[0],j[1],j[2]))

相關推薦

1025 反轉連結串列 Python實現

1025 反轉連結串列 (25)(25 分) 給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入

1025 反轉連結串列——c++實現

題目: 1025 反轉連結串列 (25 分) 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最

PAT Basic 1025. 反轉連結串列 (25)(C語言實現

, CSDN內容暫時不更新(將來有計劃更新), 請前往連結檢視最新內容. 歡迎star 我的repo題目給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為

1025. 反轉連結串列 (25)-浙大PAT乙級真題java實現

個人部落格:開啟連結 1025. 反轉連結串列 (25) 給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5

(PAT乙級)1025 反轉連結串列(C語言實現

總結: 1、首先要有hash雜湊思想,關鍵字是首地址,對應到的陣列內可以查詢到首地址對應的數值和下一地址。這樣可以構成一組資料的輸入。 2、還應該考慮輸入樣例中有不在連結串列中的結點的情況。所以用個sum計數統計在連結串列裡的有效節點。注意連結串列的最後為空,所以對應

PAT(Python)-1025:反轉連結串列(25)

給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式: 每個輸入包含1個測試用例。每個測

PAT乙級1025反轉連結串列

題目描述: 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: 每個

1025 反轉連結串列 (25 分)

24'。最後一個測試點沒過,有大佬可以指出則磕頭跪謝。  #include <iostream> #include <cstdio> #include <vector> using namespace std; struct List{

PAT乙級 1025 反轉連結串列 (25 分)

給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: 每個輸入包含

PAT 1025 反轉連結串列

#include <bits/stdc++.h> #define TEST using namespace std; struct node { int adress; int data; int next; }; int main() { int la

PAT-乙-1025 1025 反轉連結串列 (25 分)

程式碼 #include <iostream> #include <vector> using namespace std; const int MAX = 100000; struct node { int id; int

leetcode21 合併兩個有序連結串列 python實現

題目比較簡單,寫個文章記錄一下 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->

PAT (Basic Level) Practice 1025 反轉連結串列

乙級1025 該題本身就是連結串列基礎演變而來的,連結串列基礎可以看翁愷老師的C語言程式設計基礎,上面講的很詳細了 資料的儲存結構就可以類似連結串列構造: struct list{ int address;//儲存當前地址,值,下一個地址的值 int value; int

PAT乙級—1025. 反轉連結串列 (25)-native

給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式: 每個輸入包含1個測試用例

leetcode 相交連結串列 python實現

1 class Solution(object): 2 def getIntersectionNode(self, headA, headB): 3 """ 4 :type head1, head1: ListNode 5 :rtype: Li

1025 反轉連結串列 (25 分

給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,

PAT 乙級 1025 反轉連結串列

1025 反轉連結串列 (25 point(s)) 給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K&nb

pat 乙級 1025. 反轉連結串列 (25)

目前未解決  9.5 號 目標9.10之前解決 注意考慮輸入樣例中有不在連結串列中的結點的情況。所以用個sum計數 algorithm標頭檔案裡面有reverse函式可以直接呼叫 #in

PAT 乙級 1025. 反轉連結串列

給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。例如:給定L為1→2→3→4→5→6,K為3,則輸出應該為3→2→1→6→5→4;如果K為4,則輸出應該為4→3→2→1→5→6,即最後不到K個元素不反轉。 輸入格式:

1025 反轉連結串列(待寫)

給定一個常數 K 以及一個單鏈表 L,請編寫程式將 L 中每 K 個結點反轉。例如:給定 L 為 1→2→3→4→5→6,K 為 3,則輸出應該為 3→2→1→6→5→4;如果 K 為 4,則輸出應該為 4→3→2→1→5→6,即最後不到 K 個元素不反轉。 輸入格式: