数据结构上机实践课程(2018年秋)10月机考

A. 链表的倒置

单点时限: 1.0 sec

内存限制: 512 MB

现在给你一个链表的头指针。

这个指针指向链表的头结点,头结点就是链表的第一个元素,存放有效数据。

该链表没有表头结点,最后一个结点的下一个结点指向NULL

下面要求你完成一个函数的定义,来实现链表的倒置。

函数的声明如下:

/*
 * 链表的倒置
 * @param head 头指针,指向链表的第一个元素
 * @return 返回倒置后的链表的头指针,这个头指针指向倒置后的链表的第一个元素
 */
NODE* reverseLinkedList (NODE* head);

链表结点是一个结构体:

typedef struct node {
    // 其他数据域成员
    struct node* next;
} NODE;

你不需要关心这个结点有哪些数据域成员,因为你的程序不需要进行输入和输出的处理。你只需要通过完成链表的倒置,且返回倒置后的头指针。

结构体中的next是指向下一个结点的指针,最后一个结点的next指向NULL

提示

对于C/C++,将采用同一个判题程序:

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

typedef struct node {
    // 其他数据域成员
    struct node* next;
} NODE;

NODE* reverseLinkedList (NODE*);

int main (int argc, char * argv[]) {

    /* 获取输入数据,细节隐藏不表 */
    NODE* head = NULL;
    NODE* node = (NODE*)malloc(sizeof(NODE));
    /* 构建原始链表,细节隐藏不表 */

    NODE* reversedHead = reverseLinkedList (head);

    /* 后续判题,细节隐藏不表 */
}

/* 你的代码将会被嵌入在这个部分 */