链表的k子段逆转
来源:互联网 发布:java分布式高并发框架 编辑:程序博客网 时间:2024/04/29 07:00
题目:
原链表为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=s[i];p=p->next;}p->next=NULL;p=head;head=head->next;delete p;}void showList(pList head){pList p=head;while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;}int main(void){pList head;createList(head);showList(head);rReverse(head,4);showList(head);system("pause");return 0;}
0 0
- 链表的k子段逆转
- K链表逆转
- 链表的部分逆转 Reverse Nodes in k-Group
- 链表的逆转
- 链表的逆转
- 基本链表的逆转
- 算法:链表的逆转
- //链表的原地逆转
- C++ 链表的递归逆转和循环逆转
- 链表的典型题:找到链表倒数K个节点、链表逆转、合并两个链表
- 链表的逆转 -- java实现
- 链表逆转的一个算法
- 链表的输入输出以及就地逆转
- 总结:单向链表的逆转
- 链表的输入输出及逆转
- 链表的逆转(头插法)
- 链表逆转的两种方法
- 逆转链表
- 遗传算法入门掌握
- Java线程:线程的调度-守护线程
- 树莓派开发系列教程8——树莓派内核编译与固件升级
- script
- Java线程:线程的同步-同步方法
- 链表的k子段逆转
- mysql中count的用法
- AR过程与ARMA过程不同
- Hello
- AAC ADTS格式分析
- Java线程:线程的同步-同步块
- 计算机系统要素:第七章 虚拟机I:堆栈运算
- linux 宏中#和##的用法
- Java中getAbsolutePath()什么意思?