版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
构造有序(升序)的单链表
并实现单链表的逆置
(可以采用结构化的程序设计方法实现,即不必定义类)
输入
输入链表中的数据。(用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();
}