题目描述
输入一个链表,反转链表后,输出链表的所有元素。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* current = NULL;
ListNode* node = pHead;
ListNode* newHead=pHead;
while(node != NULL){
ListNode* nextNode = node->next;
if(nextNode == NULL){
newHead = node;
}
node->next = current;
current = node;
node = nextNode;
}
return newHead;
}
};
在链表的反转中,经常会出现例如空链表让程序崩溃或者链表断开等问题。我们应该常备一些测试用例做功能测试:
1)输入的链表头指针是NULL
2)输入的链表只有一个结点
3)输入的链表有多个结点
如果我们能够通过这几个测试用例,那我们程序通过的概率就会增加!