链表的逆序与合并

链表的逆序

已知一个链表的头指针为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. 什么是buffer?

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存. Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全 ...

  2. 页面布局 Wrap 组件 和 RaisedButton按钮

    一.RaisedButton 定义一个按钮 Flutter 中通过 RaisedButton 定义一个按钮.RaisedButton 里面有很多的参数,只讲简单的进行使用. return Raised ...

  3. vs2019 opencv4的相关配置

    opencv4.11存在改动,导致许多demo没有办法正常运行,但是配置方法却是相同的. 主要是连接器输入,头文件包含路径,库路.如果想要调试,还需要设置调试文件符号表. [未完待续]

  4. 如何在CentOS 7上安装Apache

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

  5. 【PAT甲级】1077 Kuchiguse (20 分)(cin.ignore()吃掉输入n以后的回车接着用getine(cin,s[i])输入N行字符串)

    题意: 输入一个正整数N(<=100),接着输入N行字符串.输出N行字符串的最长公共后缀,否则输出nai. AAAAAccepted code: #include<bits/stdc++. ...

  6. 【C语言】创建一个函数,利用该函数将字符串中的小写字母转换为大写字母

    原理: 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCII码差值为32,想要将大写字母转换 ...

  7. MyBatis-Plus学习笔记(3):分页查询

    依赖配置可参考:MyBatis-Plus学习笔记(1):环境搭建以及基本的CRUD操作 分页配置 @Configuration public class PlusConfig { @Bean publ ...

  8. phpstudy所需运行库

    百度云链接:http://pan.baidu.com/s/1jIu0v7C 密码:j1qu

  9. es 搜索功能简介

    DSL 语法介绍 语法 范围 /_search 集群上搜索所有的索引 /index1/_search index1 /index1,index2/_search index1和index2 /inde ...

  10. hive内表和外表的创建、载入数据、区别

    创建表 创建内表 create table customer( customerId int, firstName string, lastName STRING, birstDay timestam ...