链表问题(一)——反转链表

来源:互联网 发布:最难防范的网络攻击 编辑:程序博客网 时间:2024/05/18 06:47

题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。链表结点的定义如下:
struct Node
{
int data;
Node *next;
};

Node *ReverseList(Node *pHead){    Node *pReveseHead = NULL;    Node * pNode = pHead;    Node * pPrev = NULL;    while(pNode != NULL)    {        Node *pNext = pNode->next;        if(pNext == NULL)            pReverseHead = pNext;        pNode->next = pPrev;        pPrev = pNode;        pNode = pNext;    }    return pReveseHead;}//方法二:Node * ReverseList(Node *head){     Node *p1,*p2,*p3;     if(head == NULL)         return NULL;    p1 = head;    p2 = p1->next;    while(p2 != NULL)    {        p3 = p2->next;        p2->next = p1;        p1 = p2;        p2 = p3;    }    head->next = NULL;    head = p1;    return head;}
0 0
原创粉丝点击