PAT 1025 乙等 (反轉連結串列) c++
給定一個常數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(<= 105)、以及正整數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
相關推薦
PAT 1025 乙等 (反轉連結串列) c++
給定一個常數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個結點的地址、結點總個
LeetCode 206. Reverse Linked List(反轉連結串列)兩種方法實現
本文用兩種方法實現連結串列的反轉(LeetCode 206. Reverse Linked List):①利用next指標穿針引線;②遞迴演算法。 題目: Reverse a singly linked list. Example: Input: 1->2-&g
PAT 1004 乙等(成績排名) c++
讀入n名學生的姓名、學號、成績,分別輸出成績最高和成績最低學生的姓名和學號。 輸入格式:每個測試輸入包含1個測試用例,格式為 第1行:正整數n 第2行:第1個學生的姓名 學號 成績 第3行:第2個學生的姓名 學號 成績 ... ... ... 第n+1行:第n個學生的姓名 學號 成績
PAT 1065 乙等 (單身狗) c++版本
思路: 用ID作為陣列a1下標,輸入參加派對的人時,a1[ID]++; a1陣列中值為1的為參加派對的人 將已知夫妻關係的人順序輸入到陣列a,奇偶成對(為奇數下標時,向前為夫妻下標;偶數下 標時,向後為夫妻下標。LOOP <順序遍歷a陣
PAT 1005 乙等(繼續(3n+1)猜想) c++
卡拉茲(Callatz)猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。 當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候,就可以直接判定卡拉茲猜想
Leetcode88 21 合併倆個有序陣列、合併倆個有序連結串列(陣列連結串列)
1.合併倆個有序陣列 給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。 說明: 初始化 nums1 和 nums2 的元素數量分別為 m 和 n。 你可以假設 nums1 有足夠的空間(空間大小大於或等於
魔術師發牌問題(迴圈連結串列)
問題描寫敘述: 魔術師手中有A、2、3……J、Q、K十三張黑桃撲克牌。在表演魔術前,魔術師已經將他們依照一定的順序疊放好(有花色的一面朝下)。魔術表演過程為:一開始,魔術師數1,然後把最上面的那張牌翻過來,是黑桃A;然後將其放到桌面上
LeetCode 之 刪除連結串列重複的元素(簡單 連結串列)
問題描述 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例 1: 輸入: 1->1->2 輸出: 1->2 示例 2: 輸入: 1->1->2->3->3 輸出: 1->2->3
LeetCode142. Linked List Cycle||(環形連結串列)——— 判斷連結串列是否有環以及求其入環節點
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(nullptr) {} }; //判斷連結串列是否有環 //方法: //1、空間複雜度n:使用set集合儲存每一個節點,判斷是否有重複 //2
購物表(動態連結串列)+鬧鐘提醒(多執行緒)
基本連結串列的應用 增 刪 查 找 排 模糊查詢 核心程式碼如下: #include <stdio.h> #include <math.h> #include <string.h> #include <malloc.h> #incl
模板容器類及迭代器的實現二(基於連結串列)
節點類標頭檔案node.h: #ifndef MAIN_WTF_NODE1_H #define MAIN_WTF_NODE1_H #include <cstdlib> namespace main_wtf_6B {template<class Item>class
手寫LinkedList(雙向連結串列)
手寫LinkedList(雙向連結串列) 系統jdk裡的LinkedList是由一個個節點連線起來的,節點就相當於一個物件,裡面有資料域和指標域,資料域是存放資料用的,指標域就是指向下一個節點 從而相連線的 這裡是一個節點 那麼連結串列裡是什麼樣子的呢
有向圖的建立與遍歷(鄰接連結串列)
下面介紹一下,有向圖的建立與遍歷(使用鄰接連結串列法) 思路:在頂點結構體裡面,將第一條邊用指向邊的結構體的指標firstedge儲存 即struct EdgeNode * next; 1.再輸入,邊的個數,頂點的個數。 2.輸入所有節點的字母 3.最後再輸入所有的邊的字母(例如,輸入
go Ring(環形連結串列)原始碼解讀與應用
首先是環形連結串列的結構與初初始化 type Ring struct { next, prev *Ring Value interface{} // for use by client; untouched by this library } func (r
[樹] 6.63 求樹(孩子連結串列)的深度 與其他基本操作
題目來源:嚴蔚敏《資料結構》C語言版本習題冊 6.63 【題目】對以孩子連結串列表示的樹編寫計算樹的深度的演算法 【答案】 /*------------------------- |6.63 求樹的深度 | ---------------
資料結構——約瑟夫環(迴圈連結串列)
n個數據元素構成一個環,從環中任意位置開始計數,計到m將該元素從表中取出,重複上述過程,直至表中只剩下一個元素。 提示:用一個無頭結點的迴圈單鏈表來實現n個元素的儲存。 樣例: 輸入: 10 3 1 //分別為總數,出列的人數到的數字,開始數的人的編號。 輸出:
LeetCode之兩數相加(中等 連結串列)
問題描述: 給定兩個非空連結串列來表示兩個非負整數。位數按照逆序方式儲存,它們的每個節點只儲存單個數字。將兩數相加返回一個新的連結串列。 你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。 示例: 輸入:(2 -> 4 -> 3) + (5 ->
演算法精解(二):C語言描述(迴圈連結串列)
迴圈連結串列 顧名思義,首尾相連的連結串列即是迴圈連結串列。可以是單鏈表,也可以是雙鏈表。 迴圈連結串列是另一種形式的連結串列,它提供了更為靈活的遍歷連結串列元素的能力。迴圈連結串列可以是單向的或雙向的,但區分一個連結串列是
【python資料結構與演算法】連結串列——連結串列中環的入口節點、兩個連結串列的第一個公共節點(相交連結串列)
如題,這類問題在LeetCode上和劍指offer上總共有這些涉及: LeetCode:141,142,160 劍指offer:兩個連結串列的第一個公共節點(預設是無環單鏈表)、連結串列中環的入口節點 補充:兩個未知是否有環的單鏈表第一個公共節點 我直接敘述第三個問題,
C語言資料結構----連結串列(靜態連結串列)
看了老唐的靜態連結串列,越發的覺得自己是菜鳥了,因為看的過程實在是太糾結了。下面就把自己看老唐靜態連結串列的內容寫下來。 一、靜態連結串列的基礎知識 1.單鏈表的缺陷:單鏈表的實現嚴重依賴指標,每一個數據元素都要有額外的指標域。 2.在靜態表中我們把資料元素放在一個數組裡,