c string.h 用法:带表头的单链表,选择排序...很简单的程序,可是编译出错了,大虾进来看看丫~~~

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 17:28:47
如题,程序如下,编译出错:error C2061

#include <iostream>
using namespace std;

template <class T> class SingleList;
template <class T>
class Node
{
private:
T data;
Node<T> *link;
friend class SingleList<T>;
};

template <class T>
class SingleList
{
private:
Node<T> *first;
int length;
public:
SingleList()
{
first=NULL;
length=0;
}
~SingleList();
void Creat();
void SelectSort();
void Out();
};

template <class T>
SingleList<T>::~SingleList()
{
Node<T> *p;
while (first)
{
p=first->link;
delete first;
first=p;
}
}

template <class T>
void SingleList<T>::Creat()
{
Node<T> *p;
Node<T> *q;
int i,n;
cout<<"Please input the length of the list: ";
cin>>n;
length=n;
p=new Node<T>;
first=p;
first->data=0;
p=new Node<T>;
first->link=p;
cout<<"Please input the elements of the list: ";
cin>>p->data;
for (i=1;i<length;i++)
{
q=new Node<T>;
cin>>q->data;
p->link=q;
p=q;
}
p->link=NULL;
}

template <class T>
void SingleList<T>::SelectSort()
{
Node<T> *p,*q,*num;
T i;
p=first->link;
while (p->link)
{
q=p->link;
i=p->data;
num=p;
while (q) do
{
if (q->data<i)
{
i=q->data;
num=q;
}
q=q->link;
}
i=p->data;
p->data=num->data;
num->data=i;
p=p->link;
}
}

template <class T>
void SingleList<T>::Out()
{
Node<T> *p;
p=first->link;
while (p)
{
cout<<p->data<<" ";
p=p->link;
}
cout<<endl;
}

int main()
{
SingleList<int> temp;
temp.Creat();
temp.SelectSort();
temp.Out();
return 0;
}

请求指点!多谢!