四川省中国建设银行招聘信息网站,甘肃兰州事件,网站建设评分,百度seo营销推广多少钱题目#xff1a;
给你链表的头节点 head #xff0c;每 k 个节点一组进行翻转#xff0c;请你返回修改后的链表。
k 是一个正整数#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍#xff0c;那么请将最后剩余的节点保持原有顺序。
你不能只是单纯…题目
给你链表的头节点 head 每 k 个节点一组进行翻转请你返回修改后的链表。
k 是一个正整数它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍那么请将最后剩余的节点保持原有顺序。
你不能只是单纯的改变节点内部的值而是需要实际进行节点交换。 示例 1 输入head [1,2,3,4,5], k 2
输出[2,1,4,3,5]示例 2 输入head [1,2,3,4,5], k 3
输出[3,2,1,4,5]
提示
链表中的节点数目为 n1 k n 50000 Node.val 1000
代码
头结点不存储有效数值
#includestdio.h
#includestdlib.htypedef struct ListNode {int val;struct ListNode *next;
}Node;void Create(struct ListNode** head);
struct ListNode* reverseKGroup(struct ListNode* head, int k);int main()
{Node*head;Create(head);Node*resreverseKGroup(head,2);resres-next;while(res!NULL){printf(%d ,res-val);resres-next;}return 0;
}void Create(struct ListNode** head)
{*head(Node*)malloc(sizeof(Node));int n;(*head)-nextNULL;scanf(%d,n);Node*end,*ins;end*head;for(int i0;in;i){ins(Node*)malloc(sizeof(Node));int a;scanf(%d,a);ins-vala;ins-nextNULL;end-nextins;endins;}
}struct ListNode* reverseKGroup(struct ListNode* head, int k)
{struct ListNode*temphead-next;int len0;for(;temp!NULL;temptemp-next){len;}struct ListNode*nextendhead-next;struct ListNode*endhead;struct ListNode*insend-next;end-nextNULL;int p0;while(plen){if(pklen)break;struct ListNode*temp2;for(int i0;ik;i){temp2ins-next;ins-nextend-next;end-nextins;instemp2;}ppk;endnextend;nextendtemp2;}end-nextnextend;return head;
} 头结点存储有效数值LeetCode struct ListNode* reverseKGroup(struct ListNode* head, int k)
{struct ListNode*temphead;int len0;struct ListNode*res(struct ListNode*)malloc(sizeof(struct ListNode));for(;temp!NULL;temptemp-next){len;}struct ListNode*nextendhead;struct ListNode*endres;struct ListNode*inshead;end-nextNULL;int p0;while(plen){if(pklen)break;struct ListNode*temp2;for(int i0;ik;i){temp2ins-next;ins-nextend-next;end-nextins;instemp2;}ppk;endnextend;nextendtemp2;}end-nextnextend;return res-next;
}