PAT (Basic Level) 1025 反轉(zhuǎn)鏈表 (25 分) 2019-03-09

1025?反轉(zhuǎn)鏈表?(25 分)

給定一個常數(shù)?K?以及一個單鏈表?L袁滥,請編寫程序?qū)?L?中每?K?個結(jié)點反轉(zhuǎn)呛伴。例如:給定?L?為 1→2→3→4→5→6忧换,K?為 3嫩码,則輸出應(yīng)該為 3→2→1→6→5→4;如果?K?為 4狭郑,則輸出應(yīng)該為 4→3→2→1→5→6腹暖,即最后不到?K?個元素不反轉(zhuǎn)。

輸入格式:

每個輸入包含 1 個測試用例翰萨。每個測試用例第 1 行給出第 1 個結(jié)點的地址脏答、結(jié)點總個數(shù)正整數(shù)?N?(≤10?5??)、以及正整數(shù)?K?(≤N)亩鬼,即要求反轉(zhuǎn)的子鏈結(jié)點的個數(shù)殖告。結(jié)點的地址是 5 位非負整數(shù),NULL 地址用??1?表示雳锋。

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

Address Data Next

其中?Address?是結(jié)點地址,Data?是該結(jié)點保存的整數(shù)數(shù)據(jù)玷过,Next?是下一結(jié)點的地址爽丹。

輸出格式:

對每個測試用例筑煮,順序輸出反轉(zhuǎn)后的鏈表,其上每個結(jié)點占一行粤蝎,格式與輸入相同真仲。

輸入樣例:

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 <iostream>

#include<stdio.h>

#include<iomanip>

#include<cstring>

using namespace std;

typedef struct Node{

int add;

int num;

int next;

};

int main()

{

? ? int a=100;

? ? cout<<setw(6)<<setfill('0')<<a<<endl;

}

//改代碼是思考過程 ,把地址存為int型初澎,輸出時再補齊秸应。

樣例0,3谤狡,4是只需要一次反轉(zhuǎn)的。

#include <iostream>

#include<stdio.h>

#include<iomanip>

#include<cstring>

#include<algorithm>

using namespace std;

typedef struct Node{

int add;

int num;

int next;

};

bool compare(Node a,Node b){

? ? return (a.num<b.num);

}

bool compare2(Node a,Node b){

? ? return (a.num>b.num);

}

int main()

{

? ? int strartadd,num,revernum;

? ? int temp,j;

? ? j=0;

? ? scanf("%d %d %d",&strartadd,&num,&revernum);

? ? Node node[num];

? ? for(int i=0;i<num;i++){

? ? ? ? scanf("%d %d %d",&node[i].add,&node[i].num,&node[i].next);

? ? }

? ? ? ? if(revernum==0){

? ? for(int i=0;i<num;i++){

? ? ? cout<<setw(5)<<setfill('0')<<node[i].add<<' '<<node[i].num<<' '<<setw(5)<<setfill('0')<<node[i].next<<endl;

? ? }

? ? }

? ? temp=num/revernum;

? ? sort(node,node+num,compare);

? ? //printf("000\n");

? ? while(temp>j){

? ? sort(node+j*revernum,node+((j+1)*revernum),compare2);

? ? j++;

? ? }

? ? for(int i=0;i<num-1;i++){

? ? ? ? node[i].next=node[i+1].add;

? ? ? cout<<setw(5)<<setfill('0')<<node[i].add<<' '<<node[i].num<<' '<<setw(5)<<setfill('0')<<node[i].next<<endl;

? ? }

? cout<<setw(5)<<setfill('0')<<node[num-1].add<<' '<<node[num-1].num<<' '<<"-1"<<endl;

}

//以上是自己寫的代碼卧檐。最后錯了兩個樣例



以下是網(wǎng)上代碼:

#include<iostream>

#include<stdlib.h>

#include<algorithm>

using namespace std;

int main()

{

? ? int start, N, K;//起始節(jié)點地址墓懂,總結(jié)點個數(shù),反轉(zhuǎn)的節(jié)點個數(shù)

? ? cin >> start >> N >> K;

? ? /*初始化數(shù)據(jù)*/

? ? int data[100000];//記錄對應(yīng)地址的數(shù)據(jù)

? ? int next[100000];//存儲下一節(jié)點的地址

? ? int list[100000];//表現(xiàn)節(jié)點間的先后次序

? ? for (int i = 0; i < N; i++)

? ? {

? ? ? ? int address;

? ? ? ? cin >> address;

? ? ? ? cin >> data[address] >> next[address];

? ? }

? ? /*將節(jié)點按照先后順序排列*/

? ? int sum = 0;//

? ? for (int i = 0; start != -1; i++)

? ? {

? ? ? ? list[i] = start;

? ? ? ? start = next[start];

? ? ? ? sum++;

? ? }

? ? /*反轉(zhuǎn)*/

? ? for (int i = 0; i < sum / K; i++)

? ? {

? ? ? ? reverse(list + i * K, list + (i + 1) * K);

? ? }

? ? /*輸出*/

? ? for (int i = 0; i < sum; i++)

? ? {

? ? ? ? if (i == sum - 1)

? ? ? ? ? ? printf("%05d %d -1\n", list[i], data[list[i]]);

? ? ? ? else

? ? ? ? ? ? printf("%05d %d %05d\n", list[i], data[list[i]], list[i + 1]);

? ? }

? ? system("pause");

? ? return 0;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霉囚,一起剝皮案震驚了整個濱河市捕仔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盈罐,老刑警劉巖榜跌,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盅粪,居然都是意外死亡钓葫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門票顾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來础浮,“玉大人,你說我怎么就攤上這事奠骄《雇” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵含鳞,是天一觀的道長影锈。 經(jīng)常有香客問我,道長蝉绷,這世上最難降的妖魔是什么鸭廷? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮熔吗,結(jié)果婚禮上靴姿,老公的妹妹穿的比我還像新娘。我一直安慰自己磁滚,他們只是感情好佛吓,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布宵晚。 她就那樣靜靜地躺著,像睡著了一般维雇。 火紅的嫁衣襯著肌膚如雪淤刃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天吱型,我揣著相機與錄音逸贾,去河邊找鬼。 笑死津滞,一個胖子當著我的面吹牛铝侵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播触徐,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼咪鲜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了撞鹉?” 一聲冷哼從身側(cè)響起疟丙,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸟雏,沒想到半個月后享郊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡孝鹊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年炊琉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片又活。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡温自,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出皇钞,到底是詐尸還是另有隱情悼泌,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布夹界,位于F島的核電站馆里,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏可柿。R本人自食惡果不足惜鸠踪,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望复斥。 院中可真熱鬧营密,春花似錦、人聲如沸目锭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至被去,卻和暖如春主儡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惨缆。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工糜值, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坯墨。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓寂汇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捣染。 傳聞我的和親對象是個殘疾皇子骄瓣,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容