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

1.知识点:逆序建立链表
2.题意:输入整数个数N,再输入N个整数,按照这些整数输入的相反顺序建立单链表,并依次遍历输出单链表的数据
3.注意事项:指针移动、动态申请内存

代码:

#include 
#include 
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;
}

你可能感兴趣的:(数据结构实验之链表二:逆序建立链表)