链表逆序排序

来源:互联网 发布:印象主题女装淘宝店 编辑:程序博客网 时间:2024/05/16 18:41
void reverse(){ if(head->next==NULL||head==NULL||head->next->next==NULL) return;    node* N1=head->next;    node* pre=head;    node* cur=head->next;    while(cur)    {        node* saved=cur->next;        cur->next=pre;        pre=cur;        cur=saved;    }    head->next=pre;    if(N1)        N1->next=NULL;}

或者:

#include <iostream>#include<list>using namespace std;template <class T>struct Node{    T data;    Node<T>* next;};template <class T>//尾插建立循环单链表Node<T>* creat_back( Node<T> * first,int len){    Node<T>* r=first;    for( int i=0; i<len; i++)    {        int data;        cin>>data;        Node<T>* pnew=new Node<T>;        pnew->data=data;        pnew->next=r->next;        r->next=pnew;        r=pnew;    }    r->next=NULL;    return first;}template <class T>//输出链表循环单链表void show(Node<T>* first){    Node<T>* p=first->next;    while(p!=NULL)    {        cout<<p->data<<' ';        p=p->next;    }    cout<<endl<<endl;}template <class T>//单链表逆置Node<T>* Reverse(Node<T>* first){    Node<T>* cur=first->next;    Node<T>* pre=NULL;    while(cur)    {        Node<T>* r=cur->next;        cur->next=pre;        pre=cur;        cur=r;    }    first->next=pre;    return first;}template<class T>//利用头插法进行逆置Node<T>* Reverse_front(Node<T>* first){    Node<T>* p=first->next;    first->next=NULL;    while(p)    {        Node<T>* r=p->next;        p->next=first->next;        first->next=p;        p=r;    }    return first;}int main(){    Node<int >* first=new Node<int>;    first=creat_back(first,5);    show(first);    first=Reverse_front(first);    show(first);    first=Reverse(first);         show(first);    return 0;}



原创粉丝点击