当前位置:网站首页>C language to quickly solve the reverse linked list
C language to quickly solve the reverse linked list
2022-07-04 23:15:00 【I'm not Xiao Haiwa~~~~】
Reverse a linked list
Title Description :
Given the head node of a single linked list pHead( The header node has a value , For example, in the figure below , its val yes 1), The length is n, After reversing the linked list , Return the header of the new linked list .
Data range : 0≤n≤1000
requirement : Spatial complexity O(1) , Time complexity O(n)O(n)
For example, when entering a linked list {1,2,3} when , After reversal , The original linked list becomes {3,2,1}, So the corresponding output is {3,2,1}.
The above conversion process is shown in the figure below :

This paper introduces two methods :
(1) Reverse in place
(2) Double linked list method
( I think the two methods are similar …)
/*struct ListNode { int val; struct ListNode *next; }; */
// use c Language implementation
struct ListNode* ReverseList(struct ListNode* pHead ) {
struct ListNode *pre=NULL;//pre The pointer points to the last node of the inverted linked list , There was no reversal at first , So the point to null
struct ListNode *cur=pHead;//cur The pointer points to the first node of the linked list to be reversed , Wait for the first node to reverse , So the point to head
struct ListNode *nex=NULL;// Used to save broken chain nodes , That is, the pointer points to the second node of the linked list to be reversed
while(cur){
nex=cur->next;
cur->next=pre;// Realize the chain breaking operation
pre=cur;// Inverted node
cur=nex;// Point to the previously broken node
}
return pre;
}
// Double linked list implementation
struct ListNode* ReverseList(struct ListNode* pHead ) {
struct ListNode *newHead=NULL;
while(pHead!=NULL){
struct ListNode *temp=pHead->next; // Save the broken chain node
pHead->next=newHead;// Hang the new linked list after the visited original linked list node
newHead=pHead;
pHead=temp;
}
return newHead;
}
notes : You can also use stack to realize this problem , The first in and last out output just realizes the inversion
original text :https://blog.csdn.net/qq_46027119/article/details/124182305
边栏推荐
- D3.js+Three. JS data visualization 3D Earth JS special effect
- QT drawing network topology diagram (connecting database, recursive function, infinite drawing, dragging nodes)
- Redis入门完整教程:初识Redis
- Object detection based on OpenCV haarcascades
- Redis introduction complete tutorial: slow query analysis
- 【taichi】用最少的修改将太极的pbf2d(基于位置的流体模拟)改为pbf3d
- 为什么信息图会帮助你的SEO
- Redis入门完整教程:事务与Lua
- LIst 相关待整理的知识点
- Principle of lazy loading of pictures
猜你喜欢
随机推荐
Redis getting started complete tutorial: hash description
One of the commonly used technical indicators, reading boll Bollinger line indicators
Ffmpeg quick clip
MariaDB's Galera cluster application scenario -- multi master and multi active databases
法国学者:最优传输理论下对抗攻击可解释性探讨
Redis入门完整教程:事务与Lua
Redis: redis configuration file related configuration and redis persistence
Redis:Redis的事务
Set up a website with a sense of ceremony, and post it to 1/2 of the public network through the intranet
Redis入门完整教程:哈希说明
Qualcomm WLAN framework learning (30) -- components supporting dual sta
debug和release的区别
Redis入门完整教程:Redis使用场景
The difference between debug and release
Photoshop batch adds different numbers to different pictures
金融市场,资产管理与投资基金
A complete tutorial for getting started with redis: transactions and Lua
【剑指offer】1-5题
ETCD数据库源码分析——处理Entry记录简要流程
Excel 快捷键-随时补充








