1025 反轉鍊錶 25

2021-08-10 16:39:44 字數 1981 閱讀 8937

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(<= 105)、以及正整數k(<=n),即要求反轉的子鏈結點的個數。結點的位址是5位非負整數,null位址用-1表示。

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

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 

#include

typedef struct node *l;

typedef struct polynode *ll;

struct node ;

struct polynode ;

l inputfunc();

ll find(int addresslink,struct polynode node,int n);

int cmp(const void *a,const void *b);

l reverselist(l listp);

l reverse(l head,int k);

void print(l listp);

void attach (int a,int b,int c,l *rearp );

int main(void)

l reverselist(l listp)

head->link->addresslink=oldp->address;

head->link->link=oldp;

head=head->link;

listp->addresslink=newp->address;

listp->link=newp;

for(i=1;iif(n%k==0||n==k)

return listp;

}l reverse(l head,int k)

listp->addresslink=oldp->address;

listp->link=oldp;

head->addresslink=newp->address;

head->link=newp;

return listp;

}l inputfunc()

listp->data = count;

return listp;

}ll find(int addresslink,struct polynode node,int n)

return null;

}int cmp(const void *a,const void *b)

void attach (int a,int b,int c,l *rearp )//將找到的結點新增到列表中

void print(l listp)

}

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個結點的位址 結點...

1025 反轉鍊錶 25

define crt secure no warnings include include include include include include using namespace std int main int p start stacks,q 之前的想法中,每滿足k個,就輸出棧內的元素和...

1025 反轉鍊錶 25

時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 給定乙個常數k以及乙個單鏈表l,請編寫程式將l中每k個結點反轉。例如 給定l為1 2 3 4 5 6,k為3,則輸出應該為3 2 1 6 5 4 如果k為4,則輸出應該為...