1

逆序输出的数列(10分)

题目内容:

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

输入格式:

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

输出格式:

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

输入样例:

1 2 3 4 -1

输出样例:

4 3 2 1

时间限制:2000ms内存限制:128000kb
 
 #define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct num
{
int num;//数字
struct num *next;//下一个结点
};
typedef struct num NUM;//简写 //涉及4个函数
NUM *Init();//创建头结点,头结点不存储数据
void Add(NUM *head, int num);//插入数据到尾部
void Print(NUM *head);//顺序打印,非递归
NUM *Dao(NUM *head);//链表逆序,返回新的头指针 void main()
{
int num = ;
NUM *head = Init();//创建头结点,头结点不存储数据 scanf("%d", &num); while (num != -)//输入 - 1表示结束
{
Add(head, num);
scanf("%d", &num);
} NUM *newhead = Dao(head);//链表逆序,返回新的头指针 Print(newhead);//顺序打印,非递归 system("pause");
} NUM *Init()//创建头结点,头结点不存储数据
{
NUM *head = (NUM*)malloc(sizeof(NUM));//创建头结点
if (head == NULL)
{
printf("分配内存失败\n");
return NULL;
}
else
{
head->next = NULL;//最后指向NULL
return head;//返回头指针
}
} void Add(NUM *head, int num)//插入数据到尾部
{
NUM *p = head;//第1步,创建指针p,用于移动
if (p == NULL)
{
return;
}
while (p->next != NULL)//遍历
{
p = p->next;
} NUM *new = (NUM*)malloc(sizeof(NUM));//第2步,创建指针new,用于存储新数据
if (new == NULL)
{
printf("分配内存失败\n");
return;
}
new->num = num;//学号
new->next = NULL;//最后指向NULL p->next = new;//第3步,p指向new
} void Print(NUM *head)//顺序打印,非递归
{
NUM *p = head;//创建指针,用于移动
int count = ;//计数器 while (p->next != NULL)
{
if (count)
{
printf(" ");
}
printf("%d", p->next->num);
p = p->next;
count++;
}
} NUM * Dao(NUM *head)//链表逆序,返回新的头指针
{
NUM * p = NULL;//创建指针p
NUM * q = head->next;//创建指针q
NUM * r = NULL;//创建指针r while (q)
{
r = q->next;//指针r指向q的下一个结点
q->next = p;//指针q指向前面结点
p = q;//移动指针p
q = r;//移动指针q
} NUM *newhead = (NUM *)malloc(sizeof(NUM));//创建指针newhead,作为新头指针
newhead->next = p;//新头指针指向指针p
return newhead;//返回新头指针
}

网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列的更多相关文章

  1. 网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合

    3.1 枚举 3.2 结构 3.3 类型定义 3.1 枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明: enum 枚举类型名字{名字0,...,名字n}; 枚举类型名字通常并不 ...

  2. 网易云课堂_C语言程序设计进阶_第6周:程序结构

    6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它 ...

  3. 网易云课堂_C语言程序设计进阶_第8周:图形交互程序

    8.2函数指针 8.2函数指针 #include <stdio.h> #include <stdlib.h> void f(int i) { printf("void ...

  4. 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出

    7.1文件 7.2底层操作 7.1文件 格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) ...

  5. 网易云课堂_C语言程序设计进阶_第5周:链表

    5.1可变数组 5.2链表 5.1可变数组 Resizable Array Think about a set of functions that provide a mechanism of res ...

  6. 网易云课堂_C语言程序设计进阶_期末考试编程题部分

    1 字符串循环右移(5分) 题目内容: 输入一个字符串和一个非负整数N,要求将字符串循环右移N次. 输入格式: 输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未 ...

  7. 网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告

    2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength)    信号强度即大小. 其中R位于报告第一 ...

  8. 网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值

    1 计算分数精确值(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商, ...

  9. 网易云课堂_C语言程序设计进阶_第四周:ACL图形库

    创建ACLLib程序 #include"acllib.h" #include<stdio.h> int Setup1() { initWindow(, );//初始化窗 ...

随机推荐

  1. CI的扩展机制

    CI的扩展机制 在熟悉了CI的源码之后,它的简单明了的代码风格很有趣,这篇文章看看在CI是如何实现扩展的. 扩展包 扩展是为了完成特定的功能,在CI中,扩展包的开发只能在application/lib ...

  2. 解析Tensorflow官方English-Franch翻译器demo

    今天我们来解析下Tensorflow的Seq2Seq的demo.继上篇博客的PTM模型之后,Tensorflow官方也开放了名为translate的demo,这个demo对比之前的PTM要大了很多(首 ...

  3. 【Chromium中文文档】Chrome/Chromium沙箱 - 安全架构设计

    沙箱 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/Sandbox.ht ...

  4. Android混淆、反编译以及反破解的简单回顾

    =========================================================================虽然反编译很简单,也没下面说的那么复杂,不过还是转了过 ...

  5. chrome可以登陆账号的hosts文件

    原文地址: 百度 chrome吧 http://zhidao.baidu.com/question/1818688600091435508.html?qq-pf-to=pcqq.group http: ...

  6. 行变列 拼接字符串 MSSQL 一个超级搞的问题

    由数据 ThreeLevelSortID KeyWordID KeyWordName key1 key2 key3 key4 得到数据大 ThreeLevelSortID KeyWordName ke ...

  7. Why stackedit

    马克飞象 这个小工具很不错.初初看上了他能够很好写Latex,然后能同步到Evernode.但有个问题,在ipad上面用evernote的App时,latex不能显示.可能是权限的问题. Stacke ...

  8. Android Notivation的使用

    官方帮助文档:http://wear.techbrood.com/guide/topics/ui/notifiers/notifications.html 博文推荐:http://blog.csdn. ...

  9. linux学习之(五)-linux文解压、压缩、安装

    查看一个文件的类型 命令:  file  文件名 创建一个.tar类型的压缩包使用命令:tar -cvf    [文件名].tar  目录   例:tar -cvf   a.tar    yasuo/ ...

  10. float

    .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: b ...