1363: Linklist without name
题目
题目描述
在一个风和日丽的下午,Tseruof
同学闲来无事在玩蜘蛛纸牌(其实就是宅着划水),突然一道闪光,那四种花色、十三种数值全部变成了乱码,这使得肉眼识别他的顺序变得极为困难。请你帮忙完成一个程序,来帮他描述在经历一定的操作后牌堆的样子吧!
在这个较大的小作业中,你需要完善以下已经给定接口的链表类。
你需要完成的是,与std::List
中相同的部分,以及以下两个特殊函数:
link
:将obj
的内容接到该链表的后面,同时不消去前者的元素。cut
:将该链表以索引值为 $index$ 的节点的前面为界分割成两个部分(举例,$index=10$,那么将会把链表分割为 $0-9$ 与 $10-n$ 的两个部分),前面的部分保持在该链表内不变,原来链表的后半部分作为函数的返回值返回。
对于std::list
中的insert
与erase
,我们将输入参数改为位置index
,规则与上面相同。
Template
:(并不只需要填充 todo:
后面的内容)
```c++
template
public: MyList() { //todo: } MyList(MyList &&obj) noexcept { //todo: } MyList(const MyList &obj) { //todo: } ~MyList() { //todo: }
void push_back(const ValueType &value)
{
//todo:
}
void pop_back()
{
//todo:
}
void push_front(const ValueType &value)
{
//todo:
}
void pop_front()
{
//todo:
}
ValueType &front() const
{
//todo:
}
ValueType &back() const
{
//todo:
}
void insert(int index,const ValueType &value)
{
//todo:
}
void erase(int index)
{
//todo:
}
int size() const
{
//todo:
}
bool empty() const
{
//todo:
}
void clear()
{
//todo:
}
void link(const MyList &obj)
{
//todo:
}
MyList cut(int index)
{
//todo:
}
}; ```
数据范围
需要注意的是,所有的索引值在此题中都是 0-base的。
由于此题主要考察同学们的一部分OOP能力,因此对于时空复杂度要求相对较松,不必过于担心。
本题不对鲁棒性进行测试。
Oops! 本题目还没有解答!
助教老师们编题的速度,已经超过了解题的速度!
OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。
如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!