链表的逆序与合并

链表的逆序

已知一个链表的头指针为head,将该链表逆序。

#include<iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
typedef struct Node Node;
Node* ReverseLinkList(Node* head){
Node* p1 = head;
Node* p2 = p1->next;
Node* p3 = p2->next;
p1->next = NULL;
if(p3->next != NULL){
p2->next = p1;
p1 = p2;
p2 = p3;
p3 = p3->next;
}
p2->next = p1;
head =p2;
return p2;
}
int main(){ }

有序链表的合成

已知两个链表head1,head2各自有序,合并为一个新的有序链表

#include<iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
typedef struct Node Node;
Node* MergeLinkList(Node* head1,Node* head2){
if(head1 == NULL){
return head2;
}
if(head2 ==NULL){
return head1;
}
Node* head; //新链表
Node* p1; //两个辅助结点
Node* p2;
if(head1->data <= head2->data){ //先确定新链表的头结点
head = head1;
p1 = head1->next;
p2 = head2;
}
else{
head = head2;
p1 = head1;
p2 = head2->next;
}
Node* pcur = head; //辅助结点,用来确定新加入结点
while((p1 != NULL) && (p2 != NULL)){ //两个链表都不为空时
if(p1->data <= p2->data){
pcur->next = p1;
pcur = p1;
p1 = p1->next;
}
else{
pcur->next = p2;
pcur = p2;
p2 = p2->next;
}
}
if(p1 == NULL){
pcur->next = p2;
}
else{
pcur->next = p1;
}
return head;
}
int main(){ }

C++面试常见问题——04链表的逆序与合并的更多相关文章

  1. C++面试常见问题——05字符串的逆序

    字符串的逆序 #include<iostream> #include<string.h> using namespace std; void ReverseStr(char s ...

  2. 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入

    什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...

  3. python经典面试算法题1.1:如何实现链表的逆序

    本题目摘自<Python程序员面试算法宝典>,我会每天做一道这本书上的题目,并分享出来,统一放在我博客内,收集在一个分类中. 1.1 如何实现链表的逆序 [腾讯笔试题] 难度系数:⭐⭐⭐ ...

  4. ZT C语言链表操作(新增单向链表的逆序建立)

    这个不好懂,不如看 转贴:C语言链表基本操作http://www.cnblogs.com/jeanschen/p/3542668.html ZT 链表逆序http://www.cnblogs.com/ ...

  5. [剑指offer] 14. 链表中倒数第K个节点+翻转+逆序打印+合并两个排序链表 + 链表相交(第一个公共节点) (链表)

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:  两个指针,起始位置都是从链表头开始,第一个比第二个先走K个节点,当第一个走到链表尾时,第二个指针的位置就是倒数第k个节点.(两指针始终相 ...

  6. 网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列

    1 逆序输出的数列(10分) 题目内容: 你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束.然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1. 输 ...

  7. C语言链表:逆序建立单链表

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h> #define LEN sizeof( ...

  8. Java实现单链表的逆序打印

    思路1:可以将链表进行反转,然后进行数据的输出即可,单链表反转地址如下https://blog.csdn.net/Kevinnsm/article/details/113763272 这个思路1肯定有 ...

  9. 基于visual Studio2013解决面试题之0504单链表逆序

     题目

随机推荐

  1. RocketMQ-0.1

    rocketmq的主要部分是由4种集群构成的:namesrv集群.broker集群.producer集群和consumer集群. namesrv集群:也就是注册中心,rocketmq在注册中心这块没有 ...

  2. Hadoop架构: 流水线(PipeLine)

    该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 流水线(PipeLine),简单地理解就是客户端向DataNode传输数据(Packet)和接收Dat ...

  3. Docker容器里配置计划任务 crontab(DaoCloud+Docker +Laravel5)

    最近项目涉及到一个定时任务的功能,所以去这几天研究了一下 crontab 的使用方法,按照网上的相关教程顺利在自己的电脑上成功开启了这个功能 Laravel + crontab 添加 crontab ...

  4. JS中数组实现(倒序遍历数组,数组连接字符串)

    // =================== 求最大值===================================== <script> var arr = [10,35,765 ...

  5. opencv:图像的读取,显示,写入文件

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  6. Kettle — 使用手册

    https://blog.csdn.net/u013468915/article/details/82629260 kettle 教程(一):简介及入门 https://blog.csdn.net/q ...

  7. 如何在CentOS 7上安装Apache

    使用systemctl管理Apache服务 我们可以像任何其他系统单元一样管理Apache服务. 要停止Apache服务,请运行: sudo systemctl stop httpd 要再次启动,请键 ...

  8. 时间同步服务器ntpd的搭建

    如果系统没有默认安装,可以手动安装,一条命令就可以搞定: yum install ntp -y 安装之后修改配置文件: vim /etc/ntp.conf #restrict 127.0.0.1 #r ...

  9. C语言:将字符串中的前导*号全部移到字符串的尾部。

    //规定输入的字符串中只包含字母和*号,fun函数:将字符串中的前导*号全部移到字符串的尾部. #include <stdio.h> void fun( char *a ) { ]; ch ...

  10. 根据权限显示accordion

    前端界面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Home.asp ...