weixin_46472879 2020-03-12 21:36 采纳率: 0%
浏览 743

小白求问:编译报错 undefined reference to 如何解决

//头文件
#ifndef SLINKLIST_H
#define SLINKLIST_H

template
class list
{
public:
virtual void clear() = 0;
virtual int length()const = 0;
virtual void insert(int i, const elemType& x) = 0;
virtual void remove(int i) = 0;
virtual void traverse()const = 0;
virtual ~list() {};
};

template
class sLinkList :public list
{
private:
struct node{
elemType data;
node* next, * tail;

    node(const elemType& x, node* n = nullptr)
    {
        data = x; next = n;
    }
    node() :next(nullptr) {}
    ~node() {}
};
node* head;
node* tail;
int currentLength;

node* move(int i)const;

public:
sLinkList();
~sLinkList() {clear(); delete head; delete tail; }
void clear();
int length()const { return currentLength; }
void insert(int i, const elemType &x);
void remove(int i);
void traverse()const;
void erase(const elemType &x, const elemType &y);
};

#endif

//实现文件
#include "sLinkList.h"
#include
using namespace std;

template
typename sLinkList::node* sLinkList::move(int i)const
{
node* p = head;
while (i-- >= 0) p = p->next;
return p;
}

template
sLinkList::sLinkList()
{
head = new node;
tail = new node;
head->next = tail;
currentLength = 0;
}

template
void sLinkList::clear()
{
node* p = head->next, * q;
head->next = nullptr;
while (p != tail) {
q = p->next;
delete p;
p = q;
}
currentLength = 0;
}

template
void sLinkList::insert(int i, const elemType &x)
{
node* pos;

pos = move(i - 1);
pos->next = new node(x, pos->next);
++currentLength;

}

template
void sLinkList::remove(int i)
{
node* pos, * delp;

pos = move(i - 1);
delp = pos->next;
pos->next = delp->next;
delete delp;
--currentLength;

}

template
void sLinkList::erase(const elemType &x, const elemType &y)
{
node* p;
int i = 0;

p = head;
while (p->next!=tail)
{
    if (p->next->data >= x && p->next->data <= y) remove(i);
    else { p = p->next; i++; }
}

}

template
void sLinkList::traverse()const
{
node* p = head->next;
cout << endl;
while (p != tail) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}

//主函数
#include "sLinkList.h"
#include
#include
using namespace std;

int main()
{
sLinkList s;
vector v;
int tmp,x,y;

while (cin >> tmp) {
    v.push_back(tmp);
    if (getchar() == '\n')
        break;
}

for (unsigned int i = 0; i < v.size(); i++)
{
    s.insert(i, v[i]);
}

cin >> x >> y;
s.erase(x, y);
s.length();
s.traverse();

return 0;

}

  • 写回答

1条回答 默认 最新

  • 叒宇 2020-03-12 23:26
    关注

    https://blog.csdn.net/guo_lei_lamant/article/details/82856041
    参考这篇文章吧 .cpp和 .h合一起 写成.hpp

    评论

报告相同问题?

悬赏问题

  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 github训练的模型参数无法下载
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题