您的位置:首页 > 理论基础 > 数据结构算法

数据结构实验之链表二:逆序建立链表

2018-03-05 14:29 281 查看
1.知识点:逆序建立链表

2.题意:输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据

3.注意事项:指针移动、动态申请内存

代码:

#include <stdio.h>
#include <stdlib.h>
typedef struct st
{
int num;
struct st *next;
}str;
int main()
{
int n, i;
str *head, *p;//定义str类型的指针:头指针head, 游动指针p
head = (str *)malloc(sizeof(str));//为head动态申请空间
head -> next = NULL;//构建最简链表
scanf("%d", &n);
p = (str *)malloc(sizeof(str));
p -> next = NULL;//将p插入到最简链表1
head -> next = p;//将p插入到最简链表2
scanf("%d", &p -> num);//输入游动指针p的数据域
for(i = 1; i < n; i++)
{
p = (str *)malloc(sizeof(str));//游动指针p再度动态申请新的空间
//p -> next = NULL;
p -> next = head -> next;//将p插入到head之后1
head -> next = p;//将p插入到head之后2
scanf("%d", &(*p).num);//输入游动指针新p的数据域
//p = p -> next;
}
p = head -> next;//将p定位到链表的第一个实表(实数据域)
while(p != NULL)//NUll == 0,EOF == -1;
{
printf("%d%c", p -> num, p -> next == NULL? '\n': ' ');//输出游动指针p的数据域
p = p -> next;//p移动到下一个表
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  逆序建立链表