#include
using std::cin;
using std::cout;
using std::endl;
template
struct Node
{
ElemType data;
Node
Node()
: next(0)
{}
};
//单链表的模板类
template
class Linklist
{
private:
Node
int _length;
public:
Linklist(){};
void Print(void);
void Sort(void);
void Delete(int);
void Creat(void);
void GameDelete(int);
void LinklistToCirclelist();
int Length() { return _length;}
void CombineKeepSame(Linklist
void CombineKillSame(Linklist
void CopyTo(Linklist
~Linklist()
{ while(head->next!=0)
{
Node
for(int i=0;i<_length-1;i++)
tmpNode=tmpNode->next;
delete tmpNode;
}
delete head;
};
};
//单链表建立后,进行逐一赋值
template
void Linklist
{
int len;
cout<<"该的单链表长度:";
cin>>len;
head=new Node
_length=0;
Node
p=head;
for(int i=0;i
p->next=new Node
cout<<"第"< cin>>p->next->data;
p=p->next;
_length++;
}
if(_length != len )
cout<<"输入的个数不对:len = "<
for(int i=0;i<_length;i++)
{
cout<
tmpNode=tmpNode->next;
}
cout<
//排序函数,对象排序
template
void Linklist
{
ElemType temp;
Node
for(int i=0;i<_length;i++)
{
for(int j=0;j<_length;j++)
{
if((*tmpNode).next==0)tmpNode=(*head).next;
if((*tmpNode).data>(*tmpNode).next->data)
{
temp=(*tmpNode).data;
(*tmpNode).data=((*tmpNode).next)->data;
((*tmpNode).next)->data=temp;
}
else
tmpNode=(*tmpNode).next;
}
}
}
template
void Linklist
{
Node
while(0!=tmpNode->next)
tmpNode=tmpNode->next;
head=head->next;
tmpNode->next=head;
}
template
void Linklist
{
Node
Node
for(int i=1;i
{
tmpNode=tmpNode->next;
}
if(_length>1)
{
delNode=tmpNode->next;
tmpNode->next=delNode->next;
head=delNode->next;
delete delNode;
_length--;
}
}
template
void Linklist
{
while(_length!=1)
{
Delete(position);
Print();
}
}
int main()
{
Linklist
cout<<"请输入一个单链表(字母):"<
LA.Print();
LA.LinklistToCirclelist();//你可以在这设置个断点看看
int x;
cin>>x;
return 0;
}//这个是我上次试验写的,字数限制删除了两个函数…………
单链表最后一个结点next不指向NULL,指向头结点即可。
很简单啊,把最后一个元素的NEXT指向第一个元素
应该将单链表的尾指针指向头指针就可以了