您的位置:首页 > 其它

链表的反转

2016-04-07 22:13 477 查看


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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  datastructure List