給出乙個鍊錶,每 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...