C語言 K個一組翻轉鍊錶

2021-09-22 03:45:23 字數 1274 閱讀 8571

給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。

k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。

示例 :

給定這個鍊錶:1->2->3->4->5

當 k = 2 時,應當返回: 2->1->4->3->5

當 k = 3 時,應當返回: 3->2->1->4->5

說明 :

你的演算法只能使用常數的額外空間。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

這道題之前做過,但是這次還有問題,

if(ne==null)

return;

turn函式中的這句話一定要加上 因為如果不加 下面

count=1;

pre=pre1;

pre1=pre1->next;

ne=pre1->next;

ne既然是空指標 你怎麼賦值呢 這點一定要注意

還有nodet *r=pre1;

while(r->next)

注意審題

如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。

#include

typedef struct nodenodet;

void creat(nodet *b,int c)

flag->next=null;

}void prin(nodet *b)

printf(「now length=%d\n」,s);

}void turnk(nodet *b,int k)

count=1;

pre=pre1;

pre1=pre1->next;

ne=pre1->next;

nodet *r=pre1;

while(r->next)

if(count1}

}void main(){

nodet *head=(nodet *)malloc(sizeof(nodet));

head->next=null;

int num;

printf("input number\n");

scanf("%d",&num);

creat(head,num);

printf("k=\n");

int k;

scanf("%d",&k);

turnk(head,k);

prin(head);

k個一組翻轉鍊錶

題目描述 給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5當 k 2 時,應當返回 2 1 4 3 5當 k 3 時,應當返回 3 2 1...

K 個一組翻轉鍊錶

給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1...

K個一組翻轉鍊錶

難度困難416收藏分享切換為英文關注反饋 給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。示例 給你這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3...