单链表逆置

来源:互联网 发布:钢结构螺栓验算软件 编辑:程序博客网 时间:2024/06/05 09:24
#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;}

原创粉丝点击