构造有序的单链表(线性表)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43244265/article/details/102758977

构造有序(升序)的单链表

并实现单链表的逆置

(可以采用结构化的程序设计方法实现,即不必定义类)

输入
输入链表中的数据。(用0表示输入的结束,0不能添加到链表中)
输出
按顺序输出有序链表中的数据
样例输入
4 1 6 8 2 0
样例输出
1 2 4 6 8
8 6 4 2 1

AC代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn=10000;
template <class T>
struct biao
{
    T v;
    biao<T>* next;
};
template <class T>
class lian
{
    biao<T> *first;
    //biao<T> s;
public:
    lian();
    lian(T a[],int n);
    void show();
};

template <class T>
lian<T>::lian()
{
    //biao<T> first;
    first=new biao<T>;
    first->next=NULL;
}

template <class T>
lian<T>::lian(T a[],int n)
{
    //biao<T> first;
    first=new biao<T>;
    first->next=NULL;
    for(int i=0;i<n;i++)
    {
        biao<T> *s=NULL;
        s=new biao<T>;
        s->v=a[i];
        s->next=first->next;
        first->next=s;
    }
}

template <class T>
void lian<T>::show()
{
    biao<T> *p;
    p=first->next;
    while(p!=NULL)
    {
        cout<<p->v<<" ";
        p=p->next;
    }
    cout<<endl;
}
/*template <class T>
bool cmp(T a,T b)
{
    return a>b;
}*/
int main()
{
   int a[maxn],b[maxn];
   //cin>>n;
   int n=0;

   while(1)
   {
       cin>>a[n];
       if(a[n]==0)break;
       n++;
   }
    sort(a,a+n);
    for(int i=0;i<n;i++)
    b[n-1-i]=a[i];

    lian<int> h(b,n);
     h.show();
     lian<int> k(a,n);
     k.show();
}

猜你喜欢

转载自blog.csdn.net/weixin_43244265/article/details/102758977