首页 > 代码库 > 链表的k子段逆转
链表的k子段逆转
题目:
原链表为1->2->3->4->5->6->7
k=3的子段逆转结果为
3->2->1->6->5->4->7
code:
关键点
首子段要记录整个链表的头指针,记录相邻两字段的尾节点
#include "stdafx.h" #include <vector> #include <iostream> #include <hash_map> using namespace std; typedef struct node { int data; struct node* next; }*pList,Node; void rReverse(pList &list,int k) { pList p=list, tail, pretail; tail=p; int flag=0; while(p!=NULL) { int n=k; pList post=p->next; tail=p; while(post!=NULL && n--!=1) { pList temp=post->next; post->next=p; p=post; post=temp; } if(post!=NULL && flag==0) { list=p; pretail=tail; flag=1; p=post; } else if(post!=NULL) { pretail->next=p; pretail=tail; p=post; } else { pretail->next=p; tail->next=NULL; break; } } } int s[7]={1,2,3,4,5,6,7}; void createList(pList& head) { head=new Node; pList p=head; for(int i=0;i<7;i++) { p->next=new Node; p->next->data=http://www.mamicode.com/s[i];>链表的k子段逆转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。