初级算法 - C++反转链表
顾名思义, 就是将链表的所有结点反转。
代码:
#include <iostream>
struct NodeList {
int data;
struct NodeList* next;
NodeList() :data(0), next(NULL) {}
NodeList(int data) :data(data), next(NULL) {}
NodeList(int data,NodeList *next) :data(data), next(next) {}
};
class Solution {
public:
void add(NodeList* head, int dat) {
NodeList* newnode = new NodeList();
newnode->data = dat;
newnode->next = NULL;
NodeList* node = head;
while (node->next != NULL)
{
node = node->next;
}
node->next = newnode;
}
NodeList *reverse(NodeList* head)
{
NodeList* node = head;
NodeList* temp = NULL;
NodeList* reverhead = NULL;
NodeList* pnext = NULL;
while (node != NULL)
{
pnext = node->next;
if (pnext == NULL)
{
reverhead = node;
}
node->next = temp;
temp = node;
node = pnext;
}
return reverhead;
}
void print(NodeList* head)
{
NodeList* node = head;
while (node!= NULL)
{
std::cout << node->data << " ";
node = node->next;
}
std::cout << std::endl;
}
};
int main()
{
Solution s;
NodeList* node = new NodeList(1,NULL);
for (int i = 2; i < 11; i++)
{
s.add(node, i);
}
s.print(node);
NodeList *revernode = s.reverse(node);
s.print(revernode);
return 0;
}
打印:
1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1
初级算法 - C++反转链表的更多相关文章
- 数据结构与算法(c++)——反转链表
算法概述:要求实现将一条单向链表反转并考虑时间复杂度. 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向重建列表 点评:实现逻辑最简单,需要额外的内存开销. 移动指针: 通过三个指针逐 ...
- LeetCode初级算法--链表01:反转链表
LeetCode初级算法--链表01:反转链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/ ...
- LeetCode初级算法的Python实现--链表
LeetCode初级算法的Python实现--链表 之前没有接触过Python编写的链表,所以这里记录一下思路.这里前面的代码是和leetcode中的一样,因为做题需要调用,所以下面会给出. 首先定义 ...
- 反转链表算法Java实现
之前遇到反转链表的算法,比较晦涩难解,但其实挺简单的. 目标:将一个顺序链表反转. 思路:用三个辅助节点,每次实现一个节点的指向反转,即他的后继变为他的前驱. 三个辅助节点: p q r 按顺序 ...
- 算法练习LeetCode初级算法之链表
删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode ne ...
- 笔试算法题(13):反转链表 & 左旋转字符串
出题:反转链表(递归和非递归解法): 分析:有递归跟非递归实现,注意对原始链表头节点的处理,因为其他节点都指向下一个节点,其需要指向NULL: 解题: struct Node { int v; Nod ...
- LeetCode初级算法--字符串01:反转字符串
LeetCode初级算法--字符串01:反转字符串 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.ne ...
- LeetCode初级算法--链表02:合并两个有序链表
LeetCode初级算法--链表02:合并两个有序链表 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn. ...
- 2021字节跳动校招秋招算法面试真题解题报告--leetcode206 反转链表,内含7种语言答案
206.反转链表 1.题目描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1-> ...
- leetcode:Reverse Nodes in k-Group(以k为循环节反转链表)【面试算法题】
题目: Given a linked list, reverse the nodes of a linked list k at a time and return its modified list ...
随机推荐
- 各种数据库shell一键登录的方法
各种数据库shell一键登录的方法 一个小场景 想通过shell 直接执行一些内容. 然后发现通过shell就可以. 所以这里总结一下 1. Oracle export ORACLE_HOME=/u0 ...
- [转帖]Redis如何绑定CPU
文章系转载,便于分类和归纳,源文地址:https://www.yisu.com/zixun/672271.html 绑定 CPU Redis 6.0 开始支持绑定 CPU,可以有效减少线程上下文切换. ...
- 2023年了,做SEO还有必要吗?
作者:京东科技 吴磊 搜索引擎工作原理 在搜索引擎网站的后台会有一个非常庞大的数据库,里面存储了海量的关键词,而每个关键词又对应着很多网址,这些网址是被称之为"搜索引擎蜘蛛"或&q ...
- 华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力
本文分享自华为云社区<华为云CCE Turbo:基于eBPF的用户自定义多粒度网络监控能力>,作者: 云容器大未来. 基于eBPF的容器监控的兴起 容器具有极致弹性.标准运行时.易于部署等 ...
- 时不我待,拥抱趋势,开源IM项目OpenIM技术简介
坚持开源 开源的理念是基于共享.合作和透明的原则,将软件.代码等知识资源公开并允许他人使用.修改和重新分发,以促进创新和发展.以下是几个开源的优点: 创新:开源可以促进创新,通过让其他人改进或扩展已有 ...
- # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布
v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...
- 2023中国高校计算机大数据挑战赛:论文学科分类baseline|清华主办
2023中国高校计算机大数据挑战赛:论文学科分类baseline|清华主办 官方地址:https://www.heywhale.com/home/competition 项目码源见文末 1.比赛介绍 ...
- gym中的discrete类、box类和multidiscrete类简介和使用
相关文章: Box() dict()可用于创建连续的空间:OpenAI Gym Discrete和Box spaces同时存在,代码该怎么写:gym中各种离散连续写法 解读gym中的action_sp ...
- MakeFile文件的使用 [补档-2023-07-13]
makefile-gdb文件 可以在文件中指定那些文件可以先进行编译,那些文件可以后进行编译,那些文件可以重新编译.他可以自动化编译程序.... 6-1 makefile基本规则 如下: ...
- SpringCloud-Config配置中心搭建保姆级教程
一.分布式配置中⼼ 在使⽤微服务架构开发的项⽬中,每个服务都有⾃⼰的配置⽂件(application.yml),如果将每个服务的配置⽂件直接写在对应的服务中,存在以下问题: 1. 服务开发完成之后,需 ...