链表翻转
来源:互联网 发布:xp保存网络密码 编辑:程序博客网 时间:2024/05/29 15:53
描述:给出一个链表和一个数k,比如,链表为1→2→3→4→5→6,k=2,则翻转后2→1→6→5→4→3,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→6→5,用程序实现。
#include <iostream>using namespace std;typedef int Type;typedef struct LNode {Type key;LNode* next;};LNode* reverseLinkList(LNode* head) {if (!head) {return NULL;}LNode* reversedHead = NULL;LNode* curNode = head;LNode* prev = NULL;while (curNode) {LNode* next = curNode->next;if (!next) {reversedHead = curNode;}//指针反转curNode->next = prev;//下一状态prev = curNode;curNode = next;}return reversedHead;}void traverseList(LNode* head) {if (!head) {return;}while (head) {cout << head->key << ' ';head = head->next;}cout << endl;}void test() {int len = 3;LNode** nodes = new LNode*[len];memset(nodes, NULL, sizeof(LNode*) * len);if (len <= 0) {return;}nodes[0] = new LNode();nodes[0]->key = 1;for (int i = 1; i < len; ++i) {nodes[i] = new LNode();nodes[i]->key = i + 1;nodes[i - 1]->next = nodes[i];}nodes[len - 1]->next = NULL;cout << "before reverse: ";traverseList(nodes[0]);LNode* reHead = reverseLinkList(nodes[0]);cout << "after reverse: ";traverseList(reHead);}int main() {test();return 0;}
0 0
- 无情链表的创建,,翻转翻转
- 链表翻转程序
- 链表翻转
- 链表翻转
- 链表翻转
- 翻转单向链表
- 翻转链表
- 原地翻转链表
- 链表的翻转
- 链表翻转
- 翻转部分链表
- 链表翻转
- 链表翻转
- c++翻转链表
- 翻转链表
- 链表翻转
- 翻转链表
- 链表翻转
- Java 上传文件到ftp服务器
- Android Studio配置GreenDao3.0
- spring4学习日记——第五天
- web项目中文存储问题
- 微软-X-Platform跨平台工具
- 链表翻转
- Object C 类的定义
- vim 文件中所有相同单词 查找/替换/删除 ,对一个单词做某操作,对其余单词也做某操作
- Android webview加载html片段,没有<html><head>标签
- Jsoup中文API
- 普通的listview适配器
- servlet
- HDU-1165-Eddy's research II(递推 打表 找规律)
- 3翻就减原则