链表,创建新链表时,表头插入;查找时按节点顺序逐个查找。
例题:来自网易云课堂翁恺老师的课后习题。
逆序输出的数列
(10分)
题目内容:
你的程序会读入一系列的正整数,预先不知道正整数的数量,一旦读到-1,就表示输入结束。然后,按照和输入相反的顺序输出所读到的数字,不包括最后标识结束的-1。
输入格式:
一系列正整数,输入-1表示结束,-1不是输入的数据的一部分。
输出格式:
按照与输入相反的顺序输出所有的整数,每个整数后面跟一个空格以与后面的整数区分,最后的整数后面也有空格。
输入样例:
1 2 3 4 -1
输出样例:
4 3 2 1
时间限制:2000ms
内存限制:128000kb
这题开始时先用数组完成,完成后想用链表也可以。用数组要先定义数组的大小,而用链表逐个元素插入链表即可。
#include<stdio.h>
#include<malloc.h>
typedef struct List{
int data;
struct List *next;
}List;
List *L;
int main()
{
int num;
// freopen("C:\\Users\\Jimko\\Desktop\\cin.txt","r",stdin);
scanf("%d",&num);
while(num!=-1){
List *p=(List*)malloc(sizeof(List));
p->data=num;
p->next=L; //表头插入
L=p;
scanf("%d",&num);
}
List *ptrl=L; //ptrl为 L 的头节点
while(ptrl){
printf("%d",ptrl->data);
if(ptrl->next){
printf(" ");
}
ptrl=ptrl->next;
}
return 0;
}