zsh669 2022-09-28 21:25 采纳率: 87.5%
浏览 18

C++书上链表的验证,在main函数运行所有功能

把书上的链表搬到电脑上时,想要在main中检验但是不知道怎么开始
用代码块功能插入代码,请勿粘贴截图
template <typename E> class Link {
public:
    E element;
    Link* next;
    Link(const E& elemval, Link* nextVal = NULL) {
        element = elemval;
        next = nextVal;
    }
    Link(Link* nextval = NULL) {
        next = nextval;
    }
};
template <typename E> class LList : public E::template  List
{
private:
    /* data */
    Link* head;
    Link* tail;
    Link* curr;
    int cnt;

    void init() {
        curr = tail = head = new Link;
        cnt = 0;
    }

    void removeall() {
        while (head != NULL) {
            curr = head;
            head = head->next;
            delete curr;
        }
    }

public:
    LList(int size/* = defaultSize*/) {
        init();
    }

    ~LList() {
        removeall();
    }

    void print() const;
    void clear() {
        removeall();
        init();
    }

    void insert(const E& it) {
        curr->next = new Link(it, curr->next);
        if (tail == curr) {
            tail = curr->next;
        }
        cnt++;
    }

    void append(const E& it) {
        tail = tail->next = new Link(it, NULL);
        cnt++;
    }

    E remove() {
       // Assert(curr->next != NULL, "No element");
        E it = curr->next->element;
        Link* ltemp = curr->next;
        if (tail == curr->next) {
            tail = curr;
        }
        curr->next = curr->next->next;
        delete ltemp;
        cnt--;
        return it;
    }

    void moveToStart() {
        curr = head;
    }

    void moveToEnd() {
        curr = tail;
    }

    void prev() {
        if (curr == head) {
            return;
        }
        Link* temp = head;
        while (temp->next != curr) {
            temp = temp->next;
        }
        curr = temp;
    }

    void next() {
        if (curr != tail) {
            curr = curr->next;
        }
    }

    int length() const {
        return cnt;
    }

    int currPos() const {
        Link* temp = head;
        int i;
        for (i = 0; curr != temp; i++) {
            temp = temp->next;
        }
        return i;
    }

    void moveToPos(int pos) {
        //assert((pos >= 0) && (pos <= cnt), "Position out of range");
        curr = head;
        for (int i = 0; i < pos; i++) {
            curr = curr->next;
        }
    }

    const E& getValue() const {
       // assert(curr->next != NULL, "No value");
        return curr->next->element;
    }

    void reserve() {
        int i = 0;
        Link* pre = head;
        Link* it = head->next;
        for (; it->next != NULL; it = it->next, pre = pre->next) {
            it = new Link(it->element, pre);
        }
        Link* temp = tail;
        tail->next = it;
        tail->element = head->elememt;
        head = tail;
    }
};


  • 写回答

4条回答 默认 最新

    报告相同问题?

    相关推荐 更多相似问题

    问题事件

    • 创建了问题 9月28日

    悬赏问题

    • ¥15 基于人脸考勤系统的32版型选择
    • ¥20 python列表问题。在给定的由列表组成的列表中,选取其中的子列表,组合成一个新列表。新列表中的数字需包含给出的指定数字,且不允许重复。
    • ¥15 怎么样备份这些目录啊?和搭建这个服务器?回答一个都行
    • ¥15 逆向基础题 第一次做 有很多不懂需要请教
    • ¥16 基于Python的数据库系统开发
    • ¥15 某企业对员工采用计件工资管理制度。通过编写程序,要达到以下目的
    • ¥15 关于C# 英文打字练习器程序设计
    • ¥15 wfp应用层设计规则如何能传递到内核层
    • ¥15 关于机器学习创新点几个问题
    • ¥15 python程序编写