带头指针的链表反转

    科技2024-04-12  80

     

    #include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for(int i=a;i<=b;i++) #define null NULL const double pi=3.14; const int N=1e4+5; struct Node { int data; Node *nxt; }node[N]; class List { private: Node *first; public: List (int a[],int n) //尾插法构造链表 { first=new Node; Node *r=first,*p=null; for(int i=1;i<=n;i++){ p=new Node; p->data=a[i]; r->nxt=p; r=p; //cout<<p->data<<" "; } r->nxt=null; } void print() { Node *p=first; while(p->nxt!=null){ p=p->nxt; cout<<p->data<<" "; } cout<<endl; } void reverse() { Node *cur=first->nxt; Node *rear=null; Node *pre=null; while(cur!=null) { rear=cur->nxt; cur->nxt=pre; pre=cur; cur=rear; } //first=pre; //cout<<pre->nxt->data<<endl; first->nxt=pre; } }; int a[N]; int main() { int n=1; while(cin>>a[n],a[n]) n++; n--; sort(a+1,a+1+n); List obj(a,n); obj.print(); obj.reverse(); obj.print(); system("pause"); return 0; }

     

    Processed: 0.026, SQL: 8