当前位置:网站首页>力扣刷题记录9.1-----24. 两两交换链表中的节点
力扣刷题记录9.1-----24. 两两交换链表中的节点
2022-08-09 01:51:00 【@白圭】
一、题目
二、代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */
class Solution {
public:
ListNode* swapPairs(ListNode* head)
{
// //统一链表格式
// ListNode* dummyhead = new ListNode(0); //设置虚假的头结点 为了使得单节点和多节点情况统一
// dummyhead->next = head;
ListNode* test_node = new ListNode(0); //探测节点 查看之后是否还有两个以上节点
test_node=head;
if(test_node==nullptr) return test_node; //空节点直接返回
else if(test_node->next==nullptr) return test_node; //单个节点直接返回
else //大于两个节点 开始操作 比如 2 1 null
{
ListNode* return_node = new ListNode(0);
return_node=head->next;
ListNode* temp_node = new ListNode(0); //两大类情况 如果链表内没有节点或者只有一个节点 那么应该直接返回 ***最核心部分 哨兵探测
ListNode* quick_node = new ListNode(0);
ListNode* slow_node = new ListNode(0);
temp_node=head->next->next;
quick_node=head->next;
slow_node=head;
int one_opeation=0;
while(test_node!=nullptr&&test_node->next!=nullptr)
{
std::cout<<" 进入 "<<std::endl;
// //用于显示当前节点值
// std::cout<<"slow_node->val "<<slow_node->val <<std::endl;
// std::cout<<"quick_node->val "<<quick_node->val <<std::endl;
// std::cout<<"temp_node->val "<<temp_node->val <<std::endl;
test_node=test_node->next->next; // 每一轮探测指针单独操作
if(one_opeation==1)
{
slow_node=temp_node;
quick_node=slow_node->next;
temp_node=quick_node->next;
}
if(one_opeation==0) one_opeation=1; //第一轮不需要
quick_node->next=slow_node;
//temp_node往下移动会有三种情况 nullprt 一个值 两个值
if(temp_node==nullptr) slow_node->next=temp_node;
else if (temp_node!=nullptr&&temp_node->next==nullptr) slow_node->next=temp_node;
else if(temp_node!=nullptr&&temp_node->next!=nullptr) slow_node->next=temp_node->next;
// //用于显示当前链表
// ListNode *show_node;
// show_node=return_node; //构造处理节点
// while(show_node->next!=nullptr)
// {
// std::cout<<" "<<show_node->val<<" ";
// show_node=show_node->next;
// }
// std::cout<<" "<<show_node->val<<" "; //打印最后一个
// std::cout<<" "<< std::endl;
// //用于显示当前节点值
// std::cout<<"slow_node->val "<<slow_node->val <<std::endl;
// std::cout<<"quick_node->val "<<quick_node->val <<std::endl;
// std::cout<<"temp_node->val "<<temp_node->val <<std::endl;
std::cout<<" 离开 "<<std::endl;
}
return return_node;
}
}
};
三、运行结果
边栏推荐
猜你喜欢
全文翻译:EDPB关于VVA(虚拟语音助理)中处理个人数据的指南02/2021
JDBC技术(二)——设置通用的sql和配置文件
ROS2 ERROR: OpenGL 1.5 is not supported in GLRenderSystem::initialiseContext at C:\ci\ws\build...
ONNX是什么?怎么用?[简明解读版]
Educational Codeforces Round 132 (Rated for Div. 2)
typescript91-添加任务基本实现
class path resource [bean.xml] cannot be opened because it does not 错误解决方案
PMP有什么答题技巧?
史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!
谷歌翻译软件-免费谷歌翻译
随机推荐
Go-10-模块与包
ffplay playback control
LeetCode精选200道--双指针篇
观察者模式
Latex示例参考
数据恢复软件EasyRecovery支持恢复所有类型的文件
[机缘参悟-65]:《兵者,诡道也》-6-孙子兵法解读-并战计
How SEMRush finds keywords for advertising
德语翻译-德语在线批量翻译软件
如何准备一份简历
TP测试查询数据库字段为null或空的字段
知识图谱学习笔记——我的第一次知识图谱实践
配置文件的读取-TOML
VOIP使用单端口替换动态端口池进行UDP通信
Grid布局介绍
2022PMP项目管理认证考试报考指南(1)
webrtc 编译
makefile文件编译
史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!
在实际工作中如何开展性能测试?