标签:
描述
输入10个0~100的整数到数组data中,用插入排序法对输入的数据进行升序排序并输出
输入
0~100的10个整数
输出
对输入的10个数由小到大输出
样例输入
7
3
6
12
2
98
15
60
20
16
样例输出
2 3 6 7 12 15 16 20 60 98
思路:运用链表,边比较边插入,最后输出。
代码:
#include
using namespace std;
struct node
{
int data;
node *next;
};
class Linklist
{
private:
node *first;
public:
Linklist();
~Linklist();
void Paixu(int x);
void Printlist();
};
Linklist::Linklist()
{
first = new node;
first->next = NULL;
}
Linklist::~Linklist()
{
node *q=NULL;
while(first!=NULL)
{
q = first;
first = first->next;
delete q;
}
}
void Linklist::Paixu(int x)
{
node *p,*q,*r;
r=new node;
r->data= x;
p = first;
q = first->next;
if(q!=NULL)
{
while(q!=NULL&&q->data<</SPAN>r->data)
{
q=q->next;
p=p->next;
}//边遍历边比较新的数据
if(q!=NULL)
{
r->next=q;
p->next=r;
}//找到新的数据位置并且不在链表最后插入新数据
else if(q==NULL)
{
p->next=r;
r->next=NULL;
}//找到新的数据位置在链表最后插入新数据
}
else if(q==NULL)
{
p->next=r;
r->next=NULL;
}
}
void Linklist::Printlist()
{
node *p;
p=first->next;
while(p!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}//输出排好序的所有数据
}
int main()
{
Linklist l;
int i,x;
for(i=0;i<</SPAN>10;i++)
{
cin>>x;
l.Paixu(x);
}
l.Printlist();
return 0;
}
标签:
原文地址:http://www.cnblogs.com/Joazer/p/5239826.html