单点时限: 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);
/* 后续判题,细节隐藏不表 */
}
/* 你的代码将会被嵌入在这个部分 */