博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日常编程练习(六)
阅读量:4699 次
发布时间:2019-06-09

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

反转链表

1、新建链表,头解法

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :            val(x), next(NULL) {    }};*/class Solution {public:    ListNode* ReverseList(ListNode* pHead) {        ListNode* node=pHead;        ListNode* res=NULL;        while(node!=NULL)            {            ListNode* temp=new ListNode(node->val);            temp->next=res;            res=temp;            node=node->next;        }        return res;    }};

2、在原链表直接反转链表,需要记录每一个链表元素反转的后一个元素,否则会断链。

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :            val(x), next(NULL) {    }};*/class Solution {public:    ListNode* ReverseList(ListNode* pHead) {        ListNode* pre=NULL;        ListNode* node=pHead;        ListNode* after=NULL;        while(node!=NULL)        {            after=node->next;        node->next=pre;            pre=node;            node=after;        }        return pre;    }};

 

合并两个排序链表,合并后链表还是有序的(升序)

/*struct ListNode {    int val;    struct ListNode *next;    ListNode(int x) :            val(x), next(NULL) {    }};*/class Solution {public:    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)    {        if(!pHead1||!pHead2)            return ((pHead1==NULL)?pHead2:pHead1);        ListNode* node1=pHead1;        ListNode* node2=pHead2;        ListNode* newnode=NULL;        ListNode* iter=NULL;            while((node1!=NULL)&&(node2!=NULL))        {            if(node1->val<=node2->val)            {                if(newnode==NULL)                {                    newnode=node1;                    iter=node1;                    node1=node1->next;                }                else                 {                    iter->next=node1;                    iter=iter->next;                    node1=node1->next;                }            }            else            {                if(newnode==NULL)                {                    newnode=node2;                    iter=node2;                    node2=node2->next;                }                else                 {                    iter->next=node2;                    iter=iter->next;                    node2=node2->next;                }            }        }        if(node1)            iter->next=node1;        else            iter->next=node2;        return newnode;    }};

 

转载于:https://www.cnblogs.com/kiplove/p/7107707.html

你可能感兴趣的文章
iOS IM开发的一些开源、框架和教程等资料
查看>>
FansUnion:共同写博客计划终究还是“流产”了
查看>>
python 二维字典
查看>>
pip 警告!The default format will switch to columns in the future
查看>>
Arrays类学习笔记
查看>>
实验吧之【天下武功唯快不破】
查看>>
2019-3-25多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)...
查看>>
win7-64 mysql的安装
查看>>
dcm4chee 修改默认(0002,0013) ImplementationVersionName
查看>>
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
MySQL 网络访问连接
查看>>
在aws ec2上使用root用户登录
查看>>