C++实现双链表的基本功能
作者:网络转载 发布时间:[ 2017/3/7 10:46:24 ] 推荐标签:测试开发技术 双链表
在C++实现中如果遇到结点结构好定义为struct,否则会像上述情况一样需要声明多次友元,反而破坏了类的封装性
测试代码:
[cpp] view plain copy print?
void menu()
{
cout<<"************1.尾插************2.尾删**************"<<endl;
cout<<"************3.头插************4.头删**************"<<endl;
cout<<"************5.指定位置后插****6.指定位置前插******"<<endl;
cout<<"************7.删除指定元素****8.删除所有指定元素**"<<endl;
cout<<"************9.排序************0.退出*************"<<endl;
cout<<"************11.Erase**********0.退出*************"<<endl;
}
void test()
{
LinkList list;
Node *ret=NULL;
int input=1;
DataType x,num;
while(input)
{
menu();
cout<<"请输入您的选择>";
cin>>input;
switch(input)
{
case 1:
cout<<"请输入您要插入的数据>";
cin>>x;
list.PushBack(x);
break;
case 2:
list.PopBack();
break;
case 3:
cout<<"请输入您要插入的数据>";
cin>>x;
list.PushFront(x);
break;
case 4:
list.PopFront();
break;
case 5:
cout<<"请输入您要查找的数据>";
cin>>x;
ret=list.FindNum(x);
if(ret != NULL)
{
cout<<"请输入您要插入的数据>";
cin>>num;
list.Insert(ret,num);
}
else
{
cout<<"您所查找的数据不存在"<<endl;
}
break;
case 6:
cout<<"请输入您要查找的数据>";
cin>>x;
ret=list.FindNum(x);
if(ret != NULL)
{
cout<<"请输入您要插入的数据>";
cin>>num;
list.Insert(0,ret,num); //0用于占位,构成重载
}
else
{
cout<<"您所查找的数据不存在"<<endl;
}
break;
case 7:
cout<<"请输入您要删除的数据>";
cin>>x;
list.Remove(x);
break;
case 8:
cout<<"请输入您要删除的数据>";
cin>>x;
list.RemoveAll(x);
break;
case 9:
list.Sort();
break;
case 10:
cout<<list<<endl;
break;
case 11:
cout<<"请输入您要擦除的数据>";
cin>>x;
ret=list.FindNum(x);
if(ret != NULL)
{
list.Erase(ret);
}
else
{
cout<<"您所查找的数据不存在"<<endl;
}
break;
case 0:
break;
default:
cout<<"您的输入错误"<<endl;
break;
}
}
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

sales@spasvo.com