qq_21283953 2015-10-28 14:03 采纳率: 0%
浏览 1736

一个C++编译问题(数组实现的线性表),提示错误 Lnk2019,Lnk1120,具体在下,谢谢大家

错误:
1>example2_1.obj : error LNK2001: 无法解析的外部符号 "void __cdecl reverse(class SqListClass &)" (?reverse@@YAXAAV?$SqListClass@H@@@Z)
1>E:\TP\算法\算法导论\练习\测试\list\Debug\list.exe : fatal error LNK1120: 1 个无法解析的外部命令
代码

template
class SqListClass //顺序表类
{
T *data; //存放顺序表中元素
int length; //存放顺序表的长度
public:
SqListClass(); //构造函数
~SqListClass(); //析构函数
void CreateList(T *str,int n); //由str中的元素建立顺序表
void DispList(); //输出顺序表L中所有元素
int ListLength(); //求顺序表的长度
bool GetElem(int i, T &e); //求顺序表中某序号的元素值
int LocateElem(T e); //按元素值查找其序号
bool ListInsert(int i, T e); //插入数据元素
bool ListDelete(int i); //删除数据元素
//其他例子友元函数
friend void reverse(SqListClass &L);
friend bool Delaelem(SqListClass &L,T x);
friend void Merge2(SqListClass &L1,SqListClass &L2,SqListClass &L3);
};

//.................................
#include "list.h"
#include
using namespace std;
const int MaxSize=100; //顺序表的大小

//-----------------顺序表的基本运算算法--------------------------------
template
SqListClass::SqListClass() //构造函数
{
data=new T[MaxSize]; //为data分配长度为MaxSize的空间
length=0; //初始时置length为0
}
template
SqListClass::~SqListClass() //析构函数
{
delete [] data; //释放空间
}
template
void SqListClass::CreateList(T a[],int n) //由a中的元素建立顺序表
{ int i;
for (i=0; i data[i]=a[i]; //将a的每个元素存放到data元素中
length=i;
}
template
void SqListClass::DispList() //输出顺序表中所有元素
{ int i;
if (length > 0)
{
for (i=0; i cout cout }
}
template
int SqListClass::ListLength() //求顺序表的长度
{
return length;
}
template
bool SqListClass::GetElem(int i, T &e) //求顺序表中某序号的元素值
{ if (i < 1 || i > length)
return false; //参数错误时返回false
e=data[i - 1]; //取元素值
return true; //成功找到元素时返回true
}
template
int SqListClass::LocateElem(T e) //按元素值查找其序号
{ int i=0;
while (i < length && data[i]!=e)
i++; //查找元素e
if (i>=length) //未找到时返回0
return 0;
else
return i + 1; //找到后返回其逻辑序号
}
template
bool SqListClass::ListInsert(int i, T e) //插入数据元素
{ int j;
if (ilength+1)
return false; //参数错误时返回false
for (j=length; j>=i; j--) //将data[i-1]及后面元素后移一个位置
data[j]=data[j-1];
data[i-1]=e; //插入元素e
length++; //顺序表长度增1
return true; //成功插入返回true
}
template
bool SqListClass::ListDelete(int i) //删除数据元素
{ int j;
if (ilength) //参数错误时返回false
return false;
for (j=i-1; j<length-1; j++) //将data[i]之后的元素前移一个位置
data[j]=data[j+1];
length--; //顺序表长度减1
return true; //成功删除返回true
}

//.................................................................................
#include "list.cpp"
template
void reverse(SqListClass &L)
{ int i;
T tmp;
for (i=0;i { tmp=L.data[i];
L.data[i]=L.data[L.length-i-1];
L.data[L.length-i-1]=tmp;
}
}
void main()
{
int n=6;
int a[]={1,2,3,4,5,6};
SqListClass L; //建立元素类型为int的顺序表对象L
cout << "创建顺序表L" << endl;
L.CreateList(a,6);
cout << "顺序表L:" ;
L.DispList();
cout << "逆置顺序表L" << endl;
reverse(L);
cout << "顺序表L:";
L.DispList();
cout << "销毁顺序表L" << endl;
system("pause");
}

  • 写回答

2条回答 默认 最新

  • oyljerry 2015-10-28 14:49
    关注

    对应函数实现的代码有没有一起编译进来

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题