网易云课堂_C语言程序设计进阶_第5周:链表_1逆序输出的数列
1
题目内容:
你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。
输入格式:
一系列正整数,输入-1表示结束,-1不是输入的数据的一部分。
输出格式:
按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格。
输入样例:
1 2 3 4 -1
输出样例:
4 3 2 1
#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逆序输出的数列的更多相关文章
- 网易云课堂_C语言程序设计进阶_第三周:结构:结构、类型定义、联合
3.1 枚举 3.2 结构 3.3 类型定义 3.1 枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法来表明: enum 枚举类型名字{名字0,...,名字n}; 枚举类型名字通常并不 ...
- 网易云课堂_C语言程序设计进阶_第6周:程序结构
6.1 全局变量 6.2 编译预处理 6.3 大程序结构 6.1 全局变量 全局变量 定义在函数外面的变量是全局变量 全局变量具有全局的生存期和作用域 它们与任何函数都无关 在任何函数内部都可以使用它 ...
- 网易云课堂_C语言程序设计进阶_第8周:图形交互程序
8.2函数指针 8.2函数指针 #include <stdio.h> #include <stdlib.h> void f(int i) { printf("void ...
- 网易云课堂_C语言程序设计进阶_第七周:文件:文件访问、格式化输入输出、二进制输入输出
7.1文件 7.2底层操作 7.1文件 格式化的输入输出 printf %[flags][width][.prec][hIL]type Flag 含义 - 左对齐 + 在前面放+或- (space) ...
- 网易云课堂_C语言程序设计进阶_第5周:链表
5.1可变数组 5.2链表 5.1可变数组 Resizable Array Think about a set of functions that provide a mechanism of res ...
- 网易云课堂_C语言程序设计进阶_期末考试编程题部分
1 字符串循环右移(5分) 题目内容: 输入一个字符串和一个非负整数N,要求将字符串循环右移N次. 输入格式: 输入在第1行中给出一个字符串,以'#'表示结束,‘#’不是字符串的一部分,字符串的长度未 ...
- 网易云课堂_C语言程序设计进阶_第二周:指针:取地址运算和指针、使用指针、指针与数组、指针与函数、指针与const、指针运算、动态内存分配_2信号报告
2 信号报告(5分) 题目内容: 无线电台的RS制信号报告是由三两个部分组成的: R(Readability) 信号可辨度即清晰度. S(Strength) 信号强度即大小. 其中R位于报告第一 ...
- 网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
1 计算分数精确值(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商, ...
- 网易云课堂_C语言程序设计进阶_第四周:ACL图形库
创建ACLLib程序 #include"acllib.h" #include<stdio.h> int Setup1() { initWindow(, );//初始化窗 ...
随机推荐
- mysql错误:Error Code: 1175. You are using safe update mode and you tried to update a table……
今天遇到一个mysql错误: Error Code: . You are using safe update mode and you tried to update a table withou ...
- php redis数据库操作类
<?php namespace iphp\db; use iphp\App; /** * redis操作类 * 说明,任何为false的串,存在redis中都是空串. * 只有在key不存在时, ...
- 忘记linux密码
http://blog.163.com/xygzlyq@126/blog/static/22585899200810471512530/
- C语言入门(18)——数组与字符串
用来存放字符量的数组称为字符数组.字符串可以看作一个数组,它的元素是字符型的. 字符数组的定义 形式与前面介绍的数值数组相同.例如: char c[10]; 由于字符型和整型通用,也可以定义为int ...
- react-native学习笔记——ViewStack组件
今天来写一个组件,相信很多人都会用到的——ViewStack. ViewStack组件无疑是UI中很重要的一个组件,可惜react-native并没有内嵌进去,需要开发者自己去实现. 实现原理很简单, ...
- 数据库设计与SQL优化的建议
1. 用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用 ...
- 优步北京B组(8月10日-8月16日奖励规则)
奖励政策: [优步北京B组] 定义为2015年7月20日前激活的部分司机(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机( ...
- CodeForces463C Gargari and Bishops(贪心)
CodeForces463C Gargari and Bishops(贪心) CodeForces463C 题目大意: 在国际象棋的棋盘上放两个主教,这个两个主教不能攻击到同一个格子,最后的得分是这 ...
- BaseAdapter 注意的关键点!
BaseAdapter 我们一般就是继承然后重写自定义,然后listview set进去即可! 数据改变的时候,我们习惯这样: public void update(List list) { ...
- MVC5 Controller简要创建过程(2):由ControllerFactory创建Controller
上文已经完成了ControllerFactory的创建,接下来就是调用其CreateController()方法创建Controller了. DefaultControllerFactory中Crea ...