单向链表逆序

之前类似的情况碰到过好多次,自己也解决过,不知怎么到了笔试的时候反而会写错。

这样给我一个编译器,一切靠它来搞定的想法还是太幼稚啊。

#include <iostream>
using namespace std;

typedef struct ListNode{  
    int data;  
    struct ListNode* next;  
}*List;  
void printList(ListNode* head);
List ReList(List head);
int main()
{
    ListNode *head,*p,*q;
    head=new ListNode;
    head->data=0;
    head->next=NULL;
    p=head;
    for (int i=1;i<10;i++)
    {
        q=new ListNode;
        q->data=i;
        q->next=NULL;
        p->next=q;
        p=q;        
    }
    printList(head);
    List back=ReList(head);
    printList(back);
    system("pause");
    return 0;
}

List ReList(List head)
{
    List next,prev=NULL;

    while(head)
    {
        next=head->next;
        head->next=prev;
        prev=head;
        head=next;
    }    
    return prev;

}

void printList(ListNode* head)
{

    while(head)
    {
        cout<<head->data<<' ';
        head=head->next;
    }
    cout<<endl;

}
原文地址:https://www.cnblogs.com/fastcam/p/4815742.html