1. 程式人生 > >PAT(乙)1025 反轉連結串列 (25)

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個元素不反轉。

輸入格式:

每個輸入包含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
#include<stdio.h>

int node[100001][3];
int list[100001];

int main(){
	int first, n, k;
	int add, data, next;
	scanf("%d %d %d", &first, &n, &k);
	for (int i = 0; i < n; i++){
		scanf("%d %d %d", &add, &data, &next);
		node[add][1] = data;
		node[add][2] = next;
	}
	if (first == -1){
		printf("-1\n");
		return 0;
	}
	int index = first;
	int count = 0;
	list[count++] = first;
	while (node[index][2] != -1){
		node[index][0] = index;
		index = list[count++] = node[index][2];
	}
	node[index][0] = index;
	int s = 0, e = s + k - 1;
	for (; e < count && s < e; s = e+1, e += k){
		for (int j = e; j >= s; j--){
			if (j == k-1)//第一個
				printf("%05d %d ", node[list[j]][0], node[list[j]][1]);
			else printf("%05d\n%05d %d ", node[list[j]][0], node[list[j]][0], node[list[j]][1]);
		}
	}
	for (int j = s; j < count; j++){
		if (j == 0)
			printf("%05d %d ", node[list[j]][0], node[list[j]][1]);
		else
			printf("%05d\n%05d %d ", node[list[j]][0], node[list[j]][0], node[list[j]][1]);
	}
	printf("-1\n");
	return 0;
}

相關推薦

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個元素不反轉。輸入格式:每個輸入包含1個測試用例。每個測試用例第1行給

PAT (Basic Level) Practise (中文 1025. 反轉連結串列 (25)

1025. 反轉連結串列 (25) 時間限制 300 ms 記憶體限制 65536 kB 程式碼長度限制 8000 B 判題程式 Standard 作者 CHEN, Yue 給定一個常數K以及一個單鏈表L,請編寫程式將L中每K個結點反轉。

PAT (Basic Level) Practise (中文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個測試用例。每個測試用例第1行給出第1個結點的地址、結

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

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

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

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

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個測試用例

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. 反轉連結串列 (25)

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

PAT乙級 1025. 反轉連結串列 (25)--結構體、容器vector、容器pair

給定一個常數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個結點的地址、結

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個元素不反轉。 輸入格式: 每個輸入包含1個測試用例。每個測試用例第1行給出第1個結點的地址、結

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. 反轉連結串列 (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行給

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

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. 反轉連結串列 (25) PAT乙級真題

給定一個常數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個結點的地址、結

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 1025 反轉連結串列25

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

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(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個測試用例。每個測

PAT1025 反轉連結串列25basic

題目地址:http://pat.zju.edu.cn/contests/pat-b-practise/1025 /* 1.設定錄入的vector足夠大,直接把vector的index與節點的address匹配,這在節點數很少的情況下可用; 2.從給定頭結點指標開始,順序找到

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個結點的地址、結點總個