//反转链表
node * Reverse(node *head){
node *newHead = NULL;//新链表的表头 ,即已经逆转好的部分
node *oldHead, *temp;//旧链表的表头,即待逆转的部分
//temp存储当前表头的下一个结点,它将要作为旧链表新的头结点
oldHead = head;
while(oldHead){//等价于oldHead != NULL
temp = oldHead->next;
//防止链表断裂,一定要保存当前待处理的结点的下一个结点
oldHead->next = newHead;
//把当前旧链表的头结点加到新链表的头上
newHead = oldHead;//更新新链表的头结点
oldHead = temp;//更新旧链表的头结点
}
return newHead;//不管待反转的链表是空链表或
//只有一个结点的链表或有多个结点的链表,都能正确地逆转链表
}
测试点:
- 输入的链表头指针是NULL
- 输入的链表只有一个结点
- 输入的链表有多个结
链表相关操作测试用函数