练习数据结构编程时出现error LNK2001错误,求助,谢谢。
这是一个很常见连接错误,一般是由于函数有申明没实现
你的工程里可能少了ToolEditPointElem.cpp文件了
把它添加到工程里就成了
#include <stdio.h>
#include <malloc.h>
typedef struct node
{ float coef; /*序数*/
int expn; /*指数*/
struct node *next; /*指向下一个结点的指针*/
} PolyNode;
void InitList(PolyNode *&L) /*初始化多项式单链表*/
{
L=(PolyNode *)malloc(sizeof(PolyNode)); /*建立头结点*/
L->next=NULL;
}
int GetLength(PolyNode *L) /*求多项式单链表的长度*/
{
int i=0;
PolyNode *p=L->next;
while (p!=NULL) /*扫描单链表L,用i累计结点个数*/
{
i++;p=p->next;
}
return i;
}
PolyNode *GetElem(PolyNode *L,int i) /*返回多项式单链表中第i个结点的指针*/
{
int j=1;
PolyNode *p=L->next;
if (i<1 || i>GetLength(L))
return NULL;
while (j<i) /*沿next域找第i个结点*/
{
p=p->next;j++;
}
return p;
}
PolyNode *Locate(PolyNode *L,float c,int e) /*在多项式单链表中按值查找*/
{
PolyNode *p=L->next;
while (p!=NULL && (p->coef!=c ||p->expn!=e))
p=p->next;
return p;
}
int InsElem(PolyNode *&L,float c,int e,int i) /*在多项式单链表中插入一个结点*/
{
int j=1;
PolyNode *p=L,*s;
s=(PolyNode *)malloc(sizeof(PolyNode));
s->coef=c;s->expn=e;s->next=NULL;
if (i<1 || i>GetLength(L)+1)
return 0;
while (j<i) /*查找第i-1个结点*p*/
{
p=p->next;j++;
}
s->next=p->next;
p->next=s;
return 1;
}
int DelElem(PolyNode *L,int i) /*在多项式单链表中删除一个结点*/
{
int j=1;
PolyNode *p=L,*q;
if (i<1 || i>GetLength(L))
return 0;
while (j<i) /*在单链表中查找第i-1个结点,由p指向它*/
{
p=p->next;j++;
}
q=p->next; /*q指向被删结点*/
p->next=q->next; /*删除*q结点*/
free(q);
return 1;
}
void DispList(PolyNode *L) /*输出多项式单链表的元素值*/
{
PolyNode *p=L->next;
while (p!=NULL)
{
printf("(%g,%d) ",p->coef,p->expn);
p=p->next;
}
printf("\n");
}
void CreaPolyList(PolyNode *&L,float C[],int E[],int n)
{
int i;
InitList(L);
for (i=0;i<n;i++)
InsElem(L,C[i],E[i],i+1);
}
void SortPloy(PolyNode *&L) /*对L的多项式单链表按expn域递增排序*/
{
PolyNode *p=L->next,*q,*pre;
L->next=NULL;
while (p!=NULL)
{
if (L->next==NULL) /*处理第1个结点*/
{
L->next=p;p=p->next;
L->next->next=NULL;
}
else /*处理其余结点*/
{
pre=L;q=pre->next;
while (q!=NULL && p->expn>q->expn) /*找q->expn刚大于或等于p->expn的结点*q的前驱结点*pre*/
{
pre=q;q=q->next;
}
q=p->next; /*在*pre结点之后插入*p*/
p->next=pre->next;
pre->next=p;
p=q;
}
}
}
PolyNode *AddPoly(PolyNode *pa,PolyNode *pb)
{
PolyNode *pc,*p1=pa->next,*p2=pb->next,*p,*tc,*s;
pc=(PolyNode *)malloc(sizeof(PolyNode)); /*新建头结点*pc*/
pc->next=NULL; /*pc为新建单链表的头结点*/
tc=pc; /*tc始终指向新建单链表的最后结点*/
while (p1!=NULL && p2!=NULL)
{
if (p1->expn<p2->expn) /*将*p1结点复制到*s并链到pc尾*/
{
s=(PolyNode *)malloc(sizeof(PolyNode));
s->coef=p1->coef;s->expn=p1->expn;s->next=NULL;
tc->next=s;tc=s;
p1=p1->next;
}
else if (p1->expn>p2->expn) /*将*p2结点复制到*s并链到pc尾*/
{
s=(PolyNode *)malloc(sizeof(PolyNode));
s->coef=p2->coef;s->expn=p2->expn;s->next=NULL;
tc->next=s;tc=s;
p2=p2->next;
}
else /*p1->expn=p2->expn的情况*/
{
if (p1->coef+p2->coef!=0) /*序数相加不为0时新建结点*s并链到pc尾*/
{
s=(PolyNode *)malloc(sizeof(PolyNode));
s->coef=p1->coef+p2->coef;s->expn=p1->expn;
s->next=NULL;
tc->next=s;tc=s;
}
p1=p1->next;p2=p2->next;
}
}
if (p1!=NULL) p=p1; /*将尚未扫描完的余下结点复制并链接到pc单链表之后*/
else p=p2;
while (p!=NULL)
{
s=(PolyNode *)malloc(sizeof(PolyNode));
s->coef=p->coef;s->expn=p->expn;s->next=NULL;
tc->next=s;tc=s;
p=p->next;
}
tc->next=NULL; /*新建单链表最后结点的next域置空*/
return pc;
}
void main()
{
PolyNode *L1,*L2,*L3;
float C1[]={3,7,5,9},C2[]={-9,8,22};
int E1[]={1,0,17,8},E2[]={8,1,7};
InitList(L1);
InitList(L2);
InitList(L3);
CreaPolyList(L1,C1,E1,4);
CreaPolyList(L2,C2,E2,3);
printf("两多项式相加运算\n");
printf(" 原多项式A:");DispList(L1);
printf(" 原多项式B:");DispList(L2);
SortPloy(L1);
SortPloy(L2);
printf("排序后的多项式A:");DispList(L1);
printf("排序后的多项式B:");DispList(L2);
L3=AddPoly(L1,L2);
printf("多项式相加结果:");DispList(L3);
}
/*这是第二题,由于你的链表没说是否排序,所以用的最耗时的方法,如果是排序的那用归并排序就很简单了*/
typedef struct node
{int data;
struct node *next;
}Link;
void merge(Link *a,Link *b,Link *c) /*设a,b都是带头结点的单链表,c是合并后的*/
{Link *p,*q,*r,*s;
p=b->next;
c=(Link *)malloc(sizeof(Link));
q=c;
while(p!=NULL) /*将b复制到c*/
{s=(Link *)malloc(sizeof(Link));
s->data=p->data;
q->next=s;
q=s;
p=p->next;
}
q->next=NULL;
p=a->next; /*找出不同的项,并连接在c的后面*/
while(p!=NULL)
{r=b->next;
while(r!=NULL)
{if(p->data==r->data)
break;
r=r->next;
}
if(r!=NULL)
{s=(Link *)malloc(sizeof(Link));
s->data=p->data;
s->next=NULL;
q->next=s;
q=s;
}
p=p->next;
}
}
你最后看下,应该改下后就没问题了
我告诉你,你代码中的StuInfor类中的一个构造函数只做了声明,没有定义,就是那个默认构造函数StuInfor(void).
之所以在链接的时候报错而不是在编译的时候报错,是因为你这样做,没有语法上的错误,编译阶段检查不到.但是到了链接阶段,编译器去找你这个函数的定义时,发现找不到,所以报错!
改正的方法就是,你在StuInfor这个类当中,把默认构造函数StuInfor给定义了.像这样: StuInfor(void) {} 而不是像你这样StuInfor(void);声明
这样就没问题了
练习数据结构编程时出现error LNK2001错误,求助,谢谢。
\/*由于代码较长,我没有再作改动,这是数据结构编程的代码,要在C环境下运行,只需把引用方式改下即可*\/ include <stdio.h> include <malloc.h> typedef struct node { float coef; \/*序数*\/ int expn; \/*指数*\/ struct node *next; \/*指向下一个结点的指针*\/ } PolyNode;void ...
关于UE4模块中模板类的问题(error LNK2019)
在UE4中进行数据结构练习时,遇到了关于模板类在模块中的链接器错误(error LNK2019)问题。该问题出现在尝试在ToolLibraryGameModeBase.h和ToolLibraryGameModeBase.cpp文件中实现数据结构时。首先,让我们回顾一下错误信息。错误指出无法解析外部符号“declspec(dllimport) public: cdecl FDoubleLinkList::FDo...
我照着书打数据结构代码,但是为什么error
你抄书没抄全吧,很明显报错的原因是Init_SeqList(),insert_Last这些函数都么有申明,看代码也确实没给出来这些函数定义。
c语言版数据结构报出这样的错error: 'List' was not declared in this...
这个意思是说你在使用List钱没有定义一个List类型。你必须在之前写一个typedef struct{。。。} List;
数据结构中线性表用C++实现时出现:syntax error : missing ']' befor...
define OK 1;define ERROR 0;define OVERFLOW -2;define LIST_INIT_SIZE 100;后面都不要分号 注意一下define的语法
数据结构编译错误error 2660!!!
include <iostream>using namespace std;template<class type>class dseqstack{public: dseqstack(int size); void push(const type); type pop1(); int full(); void print();private: type *s; int top; int maxsize;};template<class type>dseqstack<type>::dseqs...
数据结构中error,overflow旳返回值是多少
数据结构中error,overflow旳返回值这个没有特别的规定,可以根据程序的意图,或自己的习惯来定义。比如经常将error=0,overflow=-1
c语言数据结构里的false、error、overflow、infeasible用法好像啊...
很多函数的返回类型都是Status,这里Status是用typedef定义的intl类型即:typedefintStatus;在这样的函数中根据不同情况返回ture或falseok或error。StatusListEmpty(SqListL){ \/\/若L为空表,则返回TRUE,否则返回FALSE if(L.length==0){ returnTRUE;} else { returnFALSE;} } StatusGetElem(SqListL,...
数据结构·改错error] expected ';', ',' or ')' before 'sqlist...
void InsertSort(SqList *data SqList &L)少逗号 void InsertSort(SqList *data,SqList &L)你的这个L加&什么意思?c++引用吗?void InsertSort(SqList *data,SqList L)另外你的L.r[i].key,代码中没有这个key成员
internal error是什么错误
内部错误(Internal Error)通常指的是在计算机程序或系统内部发生的未预期的错误。这种错误不是由外部输入或操作引起的,而是由程序或系统的内部逻辑、数据结构或算法问题导致的。内部错误可能会导致程序崩溃、数据损坏或其他不可预测的行为。内部错误可能由多种原因引起,包括但不限于以下几种情况:1. 编...