[PTA]实验11-2-3 逆序数据建立链表

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验11-2-3 逆序数据建立链表相关的知识,希望对你有一定的参考价值。

本题要求实现一个函数,按输入数据的逆序建立一个链表。

函数接口定义:

struct ListNode *createlist();

函数createlist利用scanf从输入中获取一系列正整数,当读到−1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。链表节点结构定义如下:

struct ListNode {
    int data;
    struct ListNode *next;
};

裁判测试程序样例:

#include <stdio.h>
#include <stdlib.h>

struct ListNode {
    int data;
    struct ListNode *next;
};

struct ListNode *createlist();

int main()
{
    struct ListNode *p, *head = NULL;

    head = createlist();
    for ( p = head; p != NULL; p = p->next )
        printf("%d ", p->data);
    printf("\\n");

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

1 2 3 4 5 6 7 -1

输出样例:

7 6 5 4 3 2 1 
  • 提交结果:

在这里插入图片描述

  • 源码:
#include <stdio.h>
#include <stdlib.h>

struct ListNode {
    int data;
    struct ListNode* next;
};

struct ListNode* createlist();

int main()
{
    struct ListNode* p, * head = NULL;

    head = createlist();
    for (p = head; p != NULL; p = p->next)
        printf("%d ", p->data);
    printf("\\n");

    return 0;
}

/* 你的代码将被嵌在这里 */
struct ListNode* createlist()
{
    struct ListNode* tail, * temp;      // 头节点、尾节点、临时节点

    // 为尾节点分配空间
    tail = (struct ListNode*)malloc(sizeof(struct ListNode));
    // 尾节点指向空
    tail->next = NULL;

    int num;

    scanf("%d", &num);

    // 如果输入的第一个数据不是-1,则将其存入尾节点,否则返回空
    if (num != -1)
    {
        tail->data = num;
    }
    else
    {
        return NULL;
    }

    scanf("%d", &num);

    // 继续输入数据,不为-1就将其插入到尾节点之前
    while (num != -1)
    {
        // 为临时节点分配内存
        temp = (struct ListNode*)malloc(sizeof(struct ListNode));
        // 数据域存储消息
        temp->data = num;

        // 将临时节点插入到尾节点前
        temp->next = tail;
        // 更新尾节点为临时节点
        tail = temp;

        scanf("%d", &num);
    }

    return tail;
}

以上是关于[PTA]实验11-2-3 逆序数据建立链表的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验11-2-1 建立学生信息链表

[PTA]实验6-7 使用函数输出一个整数的逆序数

[PTA]实验7-3-1 字符串逆序

[PTA]实验8-1-6 函数实现字符串逆序

[PTA]实验11-2-6 奇数值结点链表

[PTA]实验7-1-3 将数组中的数逆序存放