链表处理-单链表反转
来源:互联网 发布:知乎 延长时间的药 编辑:程序博客网 时间:2024/06/08 09:46
链表结构和构建
#include <iostream>#include <stack>#include <vector>#include <string.h>#include <stdlib.h>#include <string>struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) { }};//初始化链表,add为每次的累加的数字,num为累加次数ListNode* InitLink(int add, int num){ if(num < 1) return NULL; ListNode *stLink ; int i = 1; ListNode *tempNode = ( ListNode *)malloc(sizeof( ListNode)); tempNode->val = i*add+i; tempNode->next = NULL; stLink = tempNode; for(i = 2; i < num+1; ++i) { ListNode *newNode; newNode = ( ListNode *)malloc(sizeof( ListNode)); newNode->val = i*add + i; tempNode->next = newNode; tempNode = tempNode->next; } tempNode->next = NULL; return stLink;}
反转的两种常见方法:
1. 在另一个链表上进行操作
思路是:遍历链表,把遍历的每个节点依次插入到新链表上,最后形成新的链表即为原链表的反转。
代码如下
ListNode * LinkReverse(ListNode *pHead){ if(NULL == pHead|| NULL == pHead->next) return pHead; ListNode *pRes = NULL; ListNode *pTemp; ListNode *pCur = pHead; while(pCur != NULL) { pTemp = pCur; pCur = pCur->next;//先让pCur指针指向下一个位置,再做插入,不然会出错 pTemp->next = pRes; pRes = pTemp; } return pRes;}
2. 在原链表上进行操作
思路是:每次操作,把下一个节点插到第一个节点的前面,然后把第一个节点指向插入节点的下一个节点
ListNode* LinkReverse(ListNode *pHead){ if(NULL == pHead|| NULL == pHead->next) return pHead; ListNode *pCur = pHead; ListNode *pTemp; while(pCur != NULL) { //往下试探,指针是通过链表的位置变化而移动的 if(pCur->next != NULL) { pTemp = pCur->next; pCur->next = pCur->next->next; pTemp->next = pHead; pHead = pTemp; } else { break; } //pCur = pCur->next; } return pHead;}
3. 测试函数
void testLinkReverse(){ ListNode *pHead = InitLink(2,10); PrintLink(pHead,10);}
0 0
- 链表处理-单链表反转
- 单链表之反转链表
- leetcode之链表-单链表反转-C++
- 链表之单链表的反转总结
- 5.数据结构单链表之链表反转
- 链表反转
- 反转链表
- 单向链表反转
- 链表反转:
- 链表的反转
- 链表反转
- 反转单向链表
- 链表反转
- 单向链表反转
- 单向链表反转
- 链表的反转
- 链表反转
- 反转链表
- Oracle &符号如何插入(转义)
- griedview setOnItemLongClickListener 无效
- LeetCode OJ:Group Anagrams
- Oracle EBS工作流表Subject等字段取值为空解决方法
- js页面跳转整理
- 链表处理-单链表反转
- Tasks and Back Stack(任务和返回栈)
- 补充上一篇博客
- lock_guard和unique_lock的区别
- iPhone 6 A8处理器
- Codeforces Round #328 (Div. 2) A. PawnChess
- 之前介绍 thread join和detach的区别但是不详细 (详细介绍)
- java异常总结
- java 记——课本例题,判断一个字符串是否是回文