26、输入一个链表,反转链表后,输出链表的所有元素。

输入一个链表,反转链表后,输出链表的所有元素。

思路:

 ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点)

ListNode pre = null;//用来保存已经反序的第一个结点

next = head.next;//首先记录当前节点的下一个节点,(保存起来)

//先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂

head.next = pre;//让当前节点指向前一个节点,因为要反序

//保存完next,就可以让head从指向next变成指向pre了

pre = head;//让前一个节点值,取代当前的节点值。因为要继续向下走

//head指向pre后,就继续依次反转下一个节点

head = next;//让下一个节点,取代当前节点

 //让pre,head,next依次向后移动一个节点,继续下一次的指针反转

 1 /*
 2 public class ListNode {
 3     int val;
 4     ListNode next = null;
 5
 6     ListNode(int val) {
 7         this.val = val;
 8     }
 9 }*/
10 public class Solution {
11     public ListNode ReverseList(ListNode head) {
12     ListNode pre = null;
13     ListNode next = null;
14     while (head != null) {
15         next = head.next;
16         head.next = pre;
17         pre = head;
18         head = next;
19     }
20     return pre;
21 }
22 }

c++代码:

时间: 2024-10-27 05:29:20

26、输入一个链表,反转链表后,输出链表的所有元素。的相关文章

用指针??输入一个数组,逆序输出该数组

/* *Copyright(c) 2014 烟台大学计算机学院 *All rights reserved. * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:杨汉宁 * 完成日期:2014年 12 月 11 日 * 版 本 号:v1.0 * * 问题描述:输入一个数组,逆序输出该数组 * 输入描述:输入一个数组 * 程序输出:逆序输出该数组 */ #include <iostream> us

【c语言】有一函数:x &lt; 0 ,y = -1;x = 0,y = 0;x &gt; 0,y = 1,编程输入一个x值,要求输出对应的y

// 有一函数:x < 0 ,y = -1;x = 0,y = 0;x > 0,y = 1,编程输入一个x值,要求输出对应的y #include <stdio.h> int main() { int x,y; printf("请输入x:"); scanf("%d",&x); if(x > 0) y = 1; else if(x < 0) y = -1; else y = 0; printf("对应的y值是:%d\

matlab_exercise(2)----输入一个三位数,依次输出其个位数字,十位数字,百位数字

第一次作业--第二题 输入一个三位数,依次输出其个位数字,十位数字,百位数字. 1 %第二题 2 %注意:将文件命名为math_2018_4_02_01.m 3 %先判断输入的是不是三位数 4 shuru ='请输入一个三位数'; 5 x=input(shuru) 6 7 if x>100&&x<=999; 8 alert=warndlg('输入正确'); 9 b=floor(x/100) 10 % b=fix(x/100)%向下取整 11 c=fix(mod(x,100)/1

输入一个整数矩阵,计算位于矩阵边缘的元素之和

输入一个整数矩阵,计算位于矩阵边缘的元素之和.所谓矩阵边缘的元素,就是第一行和最后一行的元素以及第一列和最后一列的元素. 源代码: #include<stdio.h> #include<stdlib.h> int main() { int m,n;//矩阵的长和宽 int sum = 0; printf("输入矩阵的长和宽\n"); scanf("%d%d",&m,&n); int a[m][n];//存储矩阵的值 //为矩阵

c程序设计 8.8写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出&quot;1_9_9_0&quot;。

#include <stdio.h> //整型的数字1+48=符号数字1,整型的数字2+48=符号数字2... void main(){ int n1; void numToStr(int m); printf("请输入一个四位数字:\n"); scanf("%d",&n1); numToStr(n1); } void numToStr(int m){ int a,b,c,d,i,j; char str[7]; a=m/1000; b=(m-a*

输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

public class shuzujiaohuan { public static void main(String[] args) {  // TODO 自动生成的方法存根  Scanner reader=new Scanner(System.in);  int[] a=new int[10];  for(int i=0;i<a.length;i++){   System.out.print("请输入"+a.length+"个数字,当前第"+(i+1)+&

输入一个日期和时间,输出下一秒的日期和时间

1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <string> 4 #include <string.h> 5 #include <iostream> 6 #include <vector> 7 #include <stack> 8 using namespace std; 9 #define debug(x) cout << #x <<

输入一个新的网址后到完全显示页面,浏览器做了哪些工作?

知识要点:浏览器缓存机制,资源下载序,css渲染与js执行顺序 当浏览器第一次请求某个URL时,顺利访问的话,服务器返回状态200的状态,同时会返回给浏览器一些Headers集合,例如set-cookie,Last-Mondified,Etag等等下面重点说明Last-Mondified与Etag,即浏览器缓存. HTTP/1.x 200 OKDate:Mon, 05 Jan 2015 15:32:11 GMT ETag:"1815c-0-451b46c0" Expires:Thu,0

控制台输入一个数组,然后倒序输出

static void Main(string[] args) { Console.WriteLine("请输入十个数,并以空格隔开:"); string string1 = Console.ReadLine(); string[] string2 = System.Text.RegularExpressions.Regex.Split(string1, @"[ ]+");//表示按空格分隔,正则[0-9]表示匹配0到9的任意字符,这里匹配的是空格 string[]

C++单链表反转、两有序链表合并仍有序

1 #include<iostream> 2 3 struct Node 4 { 5 int data; 6 Node *next; 7 }; 8 9 typedef struct Node Node; 10 11 Node *Reverse(Node *head) 12 { 13 if (NULL == head || NULL == head->next) 14 return head; 15 Node *p1 = head; 16 Node *p2 = p1->next; 1