C语言-链表逆序输出
题目内容:
你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。
输入格式:
一系列正整数,输入-1表示结束,-1不是输入的数据的一部分。
输出格式:
按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格。
输入样例:
1 2 3 4 -1
输出样例:
4 3 2 1
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语言-链表逆序输出相关推荐
- 语言print如何实现连续输出_【每日一题】如何实现一个高效的单向链表逆序输出?...
今后,动力节点Java学院将每天为大家带来一道大厂面试真题,这些面试题都是大厂技术专家们结合多年的工作.面试经验总结提炼而成的面试真题. 通过这些面试题,还可以间接地了解技术大牛们出题思路与考察要点. ...
- 阿里开发者招聘节 | 面试题01:如何实现一个高效的单向链表逆序输出?
面试,如同玩一场饥饿游戏:既要对环境了然于胸,又要对自身心知肚明.发现一个好工作不容易,但成功应聘又会面临一系列的挑战. 为帮助开发者们提升面试技能.有机会入职阿里,云栖社区特别制作了这个专辑--阿里 ...
- 数据结构:链表逆序输出
数据结构(一):链表逆序输出 题目描述:创建一个链表,并将链表逆序输出,链表中以输入0作为结束 关键代码详解: 附:全部代码 #include<stdio.h> #include<s ...
- 单链表逆序输出(递归)
将单链表逆序输出 对于单链表逆序输出不改变链表结构可以考虑使用递归实现. 递归输出的主要思路为:先输出除当前节点外的后继子链表,然后输出当前结点.假如链表为:1->2->3->4-& ...
- c语言 链表倒序,C语言链表逆序方法技巧
C语言链表逆序方法技巧 C语言有丰富的数据结构和运算符.包含了各种数据结构,如整型.数组类型.指针类型和联合类型等,用来实现各种数据结构的运算.下面是小编为大家搜索整理的C语言链表逆序方法技巧,希望大 ...
- 数据结构:闲敲棋子落灯花之链表逆序输出Reverse
链表逆序输出 首先,我们需要了解,逆序输出不是把数据对应位置改变,而是仅仅改变链接顺序. 方法一:迭代链表.使用循环,遍历链表,每一步,反转一个链接. 方法二:递归. 方法一: 过程:先使第一个结点指 ...
- java 链表逆序代码_如何实现一个高效的单向链表逆序输出?(详解)
需要考虑因素,高效应权衡多方面因素 数据量是否会很大 空间是否有限制 原始链表的结构是否可以更改 时间复杂度是否有限制 一个链表节点需要输出的元素有多个,例如链表中存的是自定义对象,有多个字段 题目. ...
- C语言之逆序输出一个四位数
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/qq_42680327 题目:从键盘输入一个四位数,要求逆序输出 代码: #include < ...
- C语言——字符串逆序输出
[问题描述]将输入的字符串逆序输出 [输入形式]要求输入一个字符串 [输出形式]逆序后输出 [样例输入]abcd [样例输出]dcba #include <stdio.h> #includ ...
最新文章
- 向碳基芯片更进一步:台积电、斯坦福等联手开发碳纳米管晶体管新工艺,性能逼近硅元件...
- MOBA项目问题记录
- Python读取文件内容为字符串的方法(多种方法详解)
- 详细推导PCA算法(包括算法推导必备的知识)
- OpenCASCADE:读IGES
- 计算机安全完整性服务定义,计算机网络安全导论--5完整性保护.ppt
- mysql修改表的字段_mysql修改表字段学习笔记
- 数论 —— 素性测试
- 《左耳听风》-ARTS-打卡记录-模板
- 校园助手APP--登陆
- フェルミナ / 风拳
- html字母上方加箭头,html5怎么在图片上加左右箭头
- Power supply 子系统之最简驱动实现
- Mac电脑使用:隐藏苹果电脑桌面的硬盘图标
- 苏嵌学习日志08 07.16
- LoRaWAN介绍10 定位
- 微软word两排字左右对齐的方法
- “深入理解”的目标是什么?
- tp.cm和tp.dt报文说明,为什么计算的pgn不对,1939里的GPN如何计算,什么时候的报文没有目标地址。
- 【题库】华南理工大学研究生实验室安全教育考试638页