当前位置: 代码迷 >> 综合 >> 带头指针的链表反转
  详细解决方案

带头指针的链表反转

热度:31   发布时间:2024-02-25 16:10:16.0

 

#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;
}

 

  相关解决方案