链表翻转
来源:互联网 发布:宝日龙梅 知乎 编辑:程序博客网 时间:2024/06/06 03:28
1、给出一个链表和一个数k,比如链表1→2→3→4→5→6,
k=2,翻转后2→1→4→3→6→5,
k=3, 翻转后3→2→1→6→5→4,
k=4,翻转后4→3→2→1→5→6。
2、实现代码
#include<iostream>#include<assert.h>using namespace std;typedef struct ListNode{int _value;struct ListNode *Next;//指向下一个节点struct ListNode* _random;//指向任意节点或者空节点ListNode(int value, ListNode* next = NULL):_value(value),Next(next){}};ListNode* ReceiveList(ListNode* pHead)//头插逆置单链表{ListNode* pNewNode = NULL;ListNode* pCur = pHead;ListNode* pTemp = pHead;//链表为空或者链表只有一个结点返回该节点if (NULL == pHead || NULL == pHead->Next)return pHead;while (pTemp){pTemp = pCur->Next;pCur->Next = pNewNode;pNewNode = pCur;pCur = pTemp;}return pNewNode;}ListNode* part_reverse(ListNode* pHead, int length, int k){if (pHead == NULL || k <= 1 || k > length)return pHead;ListNode* pHead1 = pHead;ListNode* pCur = NULL;int idx = 1;while (pHead1 && idx < k){pHead1 = pHead1->Next;idx++;}pCur = pHead1;pHead1 = pHead1->Next;pCur->Next = NULL;pCur = ReceiveList(pHead);ListNode* pHead2 = part_reverse(pHead1, length - k, k);pHead->Next = pHead2;return pCur;}void pRintList(ListNode* pHead){if (NULL == pHead)cout << "空链表" << endl;else{while (pHead->Next){cout << pHead->_value << " ";pHead = pHead->Next;}cout << pHead->_value<<" ";}cout << "NULL" << endl;}int main(){ListNode* pHead1 = new ListNode(1);ListNode* pCur = pHead1;for (int i = 2; i < 10; i++){ListNode* tmpNode = new ListNode(i);pCur->Next = tmpNode;pCur = tmpNode;}pRintList(pHead1);ListNode*pNew = part_reverse(pHead1, 9, 2);pRintList(pNew);system("pause");return 0;}
阅读全文
0 0
- 无情链表的创建,,翻转翻转
- 链表翻转程序
- 链表翻转
- 链表翻转
- 链表翻转
- 翻转单向链表
- 翻转链表
- 原地翻转链表
- 链表的翻转
- 链表翻转
- 翻转部分链表
- 链表翻转
- 链表翻转
- c++翻转链表
- 翻转链表
- 链表翻转
- 翻转链表
- 链表翻转
- 端口号调研、URG和PSH、及TCP的计时器
- eclipse报错Resource is out of sync with the file system的解决方法
- 逻辑学 随笔 (始于正方法而终于负方法)
- .NET后端处理带有"\"符号的数据
- Python编程_Lesson016_类的高级用法
- 链表翻转
- 刷题——通过前序中序遍历重建二叉树
- java 基础篇
- android的recovery,fastboot和bootloader
- BZOJ 3377 [Usaco2004 Open]The Cow Lineup 奶牛序列
- 百练_2719:陶陶摘苹果
- 进程间通讯——指针方式的内存读写
- 使用深度网络创造艺术:CAN, creative adversarial networks
- css入门基础知识