LeetCode 206 单链表翻转
https://leetcode.com/problems/reverse-linked-list/
思路很简单,分别设置三个结点,之后依次调整结点1和结点2的指向关系。
Before: pre -> nxt -> nxtnxt -> ..... Here current = pre,nxt = pre->next, nxtnxt = nxt->next.
After: pre <- nxt nxtnxt -> ..... Here current = nxt, nxt = nxtnxt
代码如下(附加了一个简单的初始化链表的实例,VS2012下测试PASS)
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include <ctype.h> struct ListNode {
int val;
struct ListNode *next;
}; struct ListNode* initListNode(void){
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
head->val = ;
head->next = NULL;
} void pushNode(struct ListNode* head, int val){
struct ListNode* tmp;
struct ListNode* pre = head;
while (pre->next != NULL)
pre = pre->next;
tmp = (struct ListNode*)malloc(sizeof(struct ListNode));
pre->next = tmp;
tmp->val = val;
tmp->next = NULL;
} void printListNode(struct ListNode* head){
struct ListNode* pre = head;
while (pre != NULL){
printf("%-4d", pre->val);
pre = pre->next;
}
printf("\n");
} struct ListNode* reverseList(struct ListNode* head) {
struct ListNode* current;
struct ListNode* nxt;
struct ListNode* nxtnxt; if (head == NULL)
return head;
else if (head->next == NULL)
return head;
else{
current = head;
nxt = current->next;
while (nxt != NULL){
nxtnxt = nxt->next;
nxt->next = current;
current = nxt;
nxt = nxtnxt;
}
head->next = NULL;
return current;
}
} int main(){
int i;
struct ListNode* head = initListNode();
for (i = ; i < ; i++){
pushNode(head,i);
}
printListNode(head);
head = reverseList(head);
printListNode(head);
}
LeetCode 206 单链表翻转的更多相关文章
- Java实现单链表翻转
单链表翻转比方有例如以下链表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZmVuZ3NoaXp0eQ==/font/5a6L5L2T/fontsize ...
- 用python介绍4种常用的单链表翻转的方法
这里给出了4种4种常用的单链表翻转的方法,分别是: 开辟辅助数组,新建表头反转,就地反转,递归反转 # -*- coding: utf-8 -*- ''' 链表逆序 ''' class ListNod ...
- LeetCode 206. 反转链表(Reverse Linked List) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- 每天一道面试题LeetCode 206 -- 反转链表
LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetco ...
- leetCode:206 反转链表
206. 反转链表 题目:反转一个单链表. 进阶:链表可以迭代或递归地反转.你能否两个都实现一遍? 非递归代码: class Solution { public ListNode reverseLis ...
- Java实现 LeetCode 206 反转链表
206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...
- leetcode 206. 反转链表 及 92. 反转链表 II
206. 反转链表 问题描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1-> ...
- leetCode题解单链表反转
1.题目描述 反转一个单链表.链表节点结构如下: struct ListNode { int val; ListNode* next; }; 2.问题分析 特殊情况是输入的头结点是一个空的,或者只有一 ...
- LeetCode 206——反转链表
对单链表进行反转有迭代法和递归法两种. 1. 迭代法 迭代法从前往后遍历链表,定义三个指针分别指向相邻的三个结点,反转前两个结点,即让第二个结点指向第一个结点.然后依次往后移动指针,直到第二个结点为空 ...
随机推荐
- 实体框架(Entity Framework)
实体框架(Entity Framework) 实体框架(Entity Framework)简介 ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对 ...
- 详细解剖大型H5单页面应用的核心技术点
项目 Xut.js 阐述下开发中一个比较核心的优化技术点,这是一套平台代码,并非某一个插件功能或者框架可以直接拿来使用,核心代码大概是6万行左右(不包含任何插件) .这也并非一个开源项目,不能商业使用 ...
- ACE框架 同步原语设计
ACE框架常用的同步机制设计成统一的原语接口.同步原语使用系统平台(操作系统,多线程库)提供的同步原语,并为系统平台不提供的同步原语提供模拟实现.ACE框架使用了外观模式和适配器分两层,将同步原语统一 ...
- http工具类
/** * 发送post请求工具方法 * * @Methods Name HttpPost * @Create In 2014年10月28日 By wangfei * @param url * @pa ...
- Asp.Net Core 中获取应用程序物理路径(Getting the Web Root Path and the Content Root Path in ASP.NET Core)
如果要得到传统的ASP.Net应用程序中的相对路径或虚拟路径对应的服务器物理路径,只需要使用使用Server.MapPath()方法来取得Asp.Net根目录的物理路径,如下所示: // Classi ...
- 实现ThreadFactory接口生成自定义的线程给Fork/Join框架
Fork/Join框架是Java7中最有趣的特征之一.它是Executor和ExecutorService接口的一个实现,允许你执行Callable和Runnable任务而不用管理这些执行线程.这个执 ...
- 使用Java语言开发微信公众平台(七)——音乐消息的回复
在上一节课程中,我们学习了图片消息的回复功能.根据微信公众平台的消息类型显示,微信共支持文本.图片.语音.视频.音乐.图文等6种消息类型的回复: 其中,我们已经实现了文本.图文.图片等消息的回复处理, ...
- C语言之强化,弱化符号weak
一.概述 在C语言中,函数和初始化的全局变量(包括显示初始化为0)是强符号,未初始化的全局变量是弱符号. 对于它们,下列三条规则使用: ① 同名的强符号只能有一个,否则编译器报"重复定义&q ...
- 弹出输入内容prompt
<script> window.onload = function(){ var oBtn = document.getElementById( "btn" ); oB ...
- SQLyog-12.4.2版下载,SQLyog最新版下载,SQLyog官网下载,SQLyog Download
SQLyog-12.4.2版下载,SQLyog最新版下载,SQLyog官网下载,SQLyog Download >>>>>>>>>>> ...