博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
递归、非递归 反转单链表
阅读量:7036 次
发布时间:2019-06-28

本文共 2095 字,大约阅读时间需要 6 分钟。

定义链表结构

struct ListNode{    int val;    ListNode *next;    ListNode(int v) : val(v), next(NULL) {}};

非递归反转单链表

ListNode* reverse(ListNode *root){    if (root == NULL || root->next == NULL)        return root;    ListNode *cur = root->next;    root->next = NULL;    while (cur != NULL)    {        ListNode *tmp = cur->next;        cur->next = root;        root = cur;        cur = tmp;    }    return root;}

递归反转单链表

void reverseRec(ListNode *root, ListNode *&head){    if (root == NULL)        return;    if (root->next == NULL)    {        head = root;        return;    }    reverseRec(root->next, head);    root->next->next = root;    root->next = NULL;}

测试

#include 
using namespace std;struct ListNode{ int val; ListNode *next; ListNode(int v) : val(v), next(NULL) {}};ListNode* createList(ListNode *root){ if (root == NULL) { ListNode *root = new ListNode(0); ListNode *p1 = new ListNode(1); ListNode *p2 = new ListNode(2); root->next = p1; p1->next = p2; return root; }}void tranverse(ListNode *root){ while (root != NULL) { cout << root->val << " "; root = root->next; } cout << endl;}void deleteList(ListNode *root){ while (root != NULL) { delete root; root = NULL; }}ListNode* reverse(ListNode *root){ if (root == NULL || root->next == NULL) return root; ListNode *cur = root->next; root->next = NULL; while (cur != NULL) { ListNode *tmp = cur->next; cur->next = root; root = cur; cur = tmp; } return root;}void reverseRec(ListNode *root, ListNode *&head){ if (root == NULL) return; if (root->next == NULL) { head = root; return; } reverseRec(root->next, head); root->next->next = root; root->next = NULL;} int main(){ ListNode *root = createList(root); //ListNode *root = NULL; tranverse(root); root = reverse(root); tranverse(root); ListNode *head = NULL; reverseRec(root, head); tranverse(head); deleteList(head);}
View Code

 

转载地址:http://yejal.baihongyu.com/

你可能感兴趣的文章
.NET大型C/S系统可动态设置登录窗口的实现参考
查看>>
磁盘的读写原理
查看>>
转-快速编辑Shell命令行
查看>>
【中医养生门户网】注意!春分在于“生、升”,保肝促阳为重
查看>>
SQL 语句技巧--聚合函数的灵活使用
查看>>
Java调用SQL Server的存储过程详解
查看>>
springmvc - SqlSession
查看>>
Json 简介
查看>>
zip()方法对数组进行重新组合
查看>>
60-高级路由:IPv6 静态路由
查看>>
40. Combination Sum II
查看>>
关于适配这件小事的前世今生
查看>>
稳压电源中的谐振变频器的特征
查看>>
修改Centos7的网卡名称ens160、eno192改为eth0、eth1
查看>>
VC+ADO 连接ACCESS和SQL SERVER的方法
查看>>
LOGO設計價格 之 全面解說和如何選擇 【原創】
查看>>
Python介绍与特点(自学python知识整理)
查看>>
stimulsoft入门教程:报表与页面上的图表(一)
查看>>
数字货币支付时代即将来袭
查看>>
系统优化脚本(此脚本为原始脚本,未按照shell规范写)
查看>>