Skip to content

1363: Linklist without name

题目

题目描述

在一个风和日丽的下午,Tseruof同学闲来无事在玩蜘蛛纸牌(其实就是宅着划水),突然一道闪光,那四种花色、十三种数值全部变成了乱码,这使得肉眼识别他的顺序变得极为困难。请你帮忙完成一个程序,来帮他描述在经历一定的操作后牌堆的样子吧!

在这个较大的小作业中,你需要完善以下已经给定接口的链表类。

你需要完成的是,与std::List中相同的部分,以及以下两个特殊函数:

  • link:将obj的内容接到该链表的后面,同时不消去前者的元素。
  • cut:将该链表以索引值为 $index$ 的节点的前面为界分割成两个部分(举例,$index=10$,那么将会把链表分割为 $0-9$ 与 $10-n$ 的两个部分),前面的部分保持在该链表内不变,原来链表的后半部分作为函数的返回值返回。

对于std::list中的inserterase,我们将输入参数改为位置index,规则与上面相同。

Template:(并不只需要填充 todo: 后面的内容)

```c++ template class MyList {

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了,可以的话,请您参考添加页面,与大家一起分享你的题解!