#include <iostream>
using namespace std;
class LinkNode
{
public:
int data;
LinkNode *next;
LinkNode(int k)
{
data=k;
next=NULL;
}
~LinkNode()
{}
};
class LinkList
{
public:
LinkNode *head;
LinkList();
// ~LinkList(); //采用系统提供的析构函数
friend ostream & operator<<(ostream& out,LinkList &h1);
};
LinkList::LinkList()
{
head=NULL;
}
ostream & operator<<(ostream& out,LinkList &h1)
{
LinkNode *p=h1.head;
while(p!=NULL)
{
cout<<p->data<<"->";
p=p->next;
}
return out;
}
void insertsort_link(LinkList& h1,int *d_table,int d_num)
{
for(int i=0;i<d_num;i++)
{ LinkNode *q=new LinkNode(d_table[i]); //q指向新结点
if(h1.head==NULL) //空表插入
{ h1.head=q;
}
else //非空表插入
{
if(q->data<=h1.head->data) //头插
{
q->next=h1.head;
h1.head=q; //改变头指针
}
else //表尾或表中插
{
LinkNode *p_prior,*p=h1.head;
while(p!=NULL && q->data>p->data)
{
p_prior=p;
p=p->next;
}
p_prior->next=q;
q->next=p;
}
}
}
}
int main()
{
cout<<"input the data(ENTER 0 to end the input):";
LinkList h1;
int d;
//int *data_table,i=0;
int data_table[] = {5,4,2,9,2,7,8,0,2};
//while(0!=data_table[i-1])
//{
// cin>>data_table[i++];
//}
cout<<"unsorted :";
//for(int a=0;a<i;a++)
//cout<<data_table[a]<<"->";
int data[2] = {0,0};
insertsort_link(h1,data_table,9);
insertsort_link(h1,data,2);
// cout<<h1;
cout<<endl<<"sorted:"<<h1;
system("pause");
}