LinkedList ReverseList(Node *head)
{
Node *NewHead = NULL;
Node *p1, *p2, *tmp;
if(head == NULL)
return NULL;
if(head)
{
p1 = head;
p2 = head->next;
}
while(p2)
{
tmp = p2->next;
p2->next = p1;
p1 = p2;
p2 =tmp;
}
head->next = NULL;
NewHead = p1;
return NewHead;
}
还有一种方法:
就是新建一个头结点,头结点的next指向NULL,每次在新建头结点和头结点的next之间插入结点,一直这样...
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *head = (ListNode*)malloc(sizeof(ListNode));
ListNode *p;
head->next = NULL;
while(pHead){
p = pHead;
pHead = pHead->next;
p->next = head->next;
head->next = p;
}
return head->next;
}
};