逆序输出 (10分)

题目内容:

你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。

输入格式:

一系列正整数,输入-1表示结束,-1不是输入的数据的一部分。

输出格式:

按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格。

输入样例:

1 2 3 4 -1

输出样例:

4 3 2 1

时间限制:500ms内存限制:32000kb
分析:该题比较简单,只要熟悉链表的操作,都能解决,我的算法思路如下:
List Sort(List L)
{List P=L->Next,P0=L,P1=P->Next,t;  /* P0当前处理的上一个结点,P1当前处理的下一个结点 */ List Pt = L;Pt->Next = NULL;    /* 头结点指向空 */ for(; P1!=NULL; ){P->Next = P0; /* 指向前驱 */     P0 = P;       /* 将当前结点赋给上一个结点 */P = P1;      /* 将下一个结点赋给当前结点 */P1 = P->Next; /* P重新指向下一个结点P */ }L = P0;   free(P);return L;
}

遇到问题:

1、指针用的不够熟悉,花了两分钟才发现第一个bug

for(P=L;P->Next!=NULL;P=P->Next)      //P->Next!=NULL明显的错误,会少打印一个printf("%d ",P->data);

2、void Sort(List L)   定义为void类型函数,此时若函数参数为List L,使不能返回指向L的链表,需要改成指向指针的指针才行。

源程序:

#include <stdio.h>
#include <stdlib.h>typedef struct LNode* List;
struct LNode{int data;List Next;
};List ReadInput();   /* 输入 */
List Sort(List L);  /* 逆序 */
void Print(List L);     /* 输出 */ int main()
{List L,P;L = ReadInput();P = Sort(L);Print(P);return 0;
}List ReadInput()
{List L,P,t;L = (List)malloc(sizeof(struct LNode));P = L;for(;;){scanf("%d",&P->data);t = P;P = (List)malloc(sizeof(struct LNode));t->Next = P;if(t->data == -1){t->Next = NULL; free(P);break;}}return L;} List Sort(List L)
{List P=L->Next,P0=L,P1=P->Next,t;  /* P0当前处理的上一个结点,P1当前处理的下一个结点 */ List Pt = L;Pt->Next = NULL;    /* 头结点指向空 */ for(; P1!=NULL; ){P->Next = P0; /* 指向前驱 */     P0 = P;       /* 将当前结点赋给上一个结点 */P = P1;      /* 将下一个结点赋给当前结点 */P1 = P->Next; /* P重新指向下一个结点P */ }L = P0;   free(P);return L;
}void Print(List L)
{List P;for(P=L;P!=NULL;P=P->Next)printf("%d ",P->data);
}

C语言-链表逆序输出相关推荐

  1. 语言print如何实现连续输出_【每日一题】如何实现一个高效的单向链表逆序输出?...

    今后,动力节点Java学院将每天为大家带来一道大厂面试真题,这些面试题都是大厂技术专家们结合多年的工作.面试经验总结提炼而成的面试真题. 通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点. ...

  2. 阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?

    面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明.发现一个好工作不容易,但成功应聘又会面临一系列的挑战. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里 ...

  3. 数据结构:链表逆序输出

    数据结构(一):链表逆序输出 题目描述:创建一个链表,并将链表逆序输出,链表中以输入0作为结束 关键代码详解: 附:全部代码 #include<stdio.h> #include<s ...

  4. 单链表逆序输出(递归)

    将单链表逆序输出 对于单链表逆序输出不改变链表结构可以考虑使用递归实现. 递归输出的主要思路为:先输出除当前节点外的后继子链表,然后输出当前结点.假如链表为:1->2->3->4-& ...

  5. c语言 链表倒序,C语言链表逆序方法技巧

    C语言链表逆序方法技巧 C语言有丰富的数据结构和运算符.包含了各种数据结构,如整型.数组类型.指针类型和联合类型等,用来实现各种数据结构的运算.下面是小编为大家搜索整理的C语言链表逆序方法技巧,希望大 ...

  6. 数据结构:闲敲棋子落灯花之链表逆序输出Reverse

    链表逆序输出 首先,我们需要了解,逆序输出不是把数据对应位置改变,而是仅仅改变链接顺序. 方法一:迭代链表.使用循环,遍历链表,每一步,反转一个链接. 方法二:递归. 方法一: 过程:先使第一个结点指 ...

  7. java 链表逆序代码_如何实现一个高效的单向链表逆序输出?(详解)

    需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. ...

  8. C语言之逆序输出一个四位数

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_42680327    题目:从键盘输入一个四位数,要求逆序输出 代码: #include < ...

  9. C语言——字符串逆序输出

    [问题描述]将输入的字符串逆序输出 [输入形式]要求输入一个字符串 [输出形式]逆序后输出 [样例输入]abcd [样例输出]dcba #include <stdio.h> #includ ...

最新文章

  1. 向碳基芯片更进一步:台积电、斯坦福等联手开发碳纳米管晶体管新工艺,性能逼近硅元件...
  2. MOBA项目问题记录
  3. Python读取文件内容为字符串的方法(多种方法详解)
  4. 详细推导PCA算法(包括算法推导必备的知识)
  5. OpenCASCADE:读IGES
  6. 计算机安全完整性服务定义,计算机网络安全导论--5完整性保护.ppt
  7. mysql修改表的字段_mysql修改表字段学习笔记
  8. 数论 —— 素性测试
  9. 《左耳听风》-ARTS-打卡记录-模板
  10. 校园助手APP--登陆
  11. フェルミナ / 风拳
  12. html字母上方加箭头,html5怎么在图片上加左右箭头
  13. Power supply 子系统之最简驱动实现
  14. Mac电脑使用:隐藏苹果电脑桌面的硬盘图标
  15. 苏嵌学习日志08 07.16
  16. LoRaWAN介绍10 定位
  17. 微软word两排字左右对齐的方法
  18. “深入理解”的目标是什么?
  19. tp.cm和tp.dt报文说明,为什么计算的pgn不对,1939里的GPN如何计算,什么时候的报文没有目标地址。
  20. 【题库】华南理工大学研究生实验室安全教育考试638页

热门文章

  1. mybatis中resultMap和resultType区别,三分钟读懂
  2. 更新包与已安装应用的签名不一致
  3. 20221125使用PR2023自动识别obs-studio录屏生成的MKV视频的字幕
  4. SQL Server 代理 显示异常,未开启
  5. 8个实用、强大、超厉害的软件推荐,快收藏吧!
  6. 七.全文检索ElasticSearch经典入门-聚合查询
  7. Java PDF 水印
  8. oracle 数据库 ORA-28000错误的原因及解决办法
  9. 华擎主板bios设置图解_华擎主板设置BIOS的图解教程
  10. 代码实现全局消息钩子SetWindowsHookExA监视按键记录