无法在 Borland C++ 中将'void*'转换为 *poly 节点错误
cannot convert 'void*' to *poly node error in borland c++
美好的一天!我正在使用 Borland C++ 在 DSA 中进行作业,并且我正在寻找一个使用链表实现加和乘多项式的示例。
幸运的是,我找到了 1 个适合我的任务。
但唯一的问题是它给了我一个错误,它指出:
"无法将'void*'转换为'polyNode*'
帮我解决这个问题。
下面是示例代码:
#include<stdio.h>
#include<malloc.h>
typedef struct polyNode *polyPointer;
struct polyNode {
int coef;
int expon;
polyPointer link; } polyNode;
void printPoly(polyPointer);
void insertTerm(int,int,polyPointer);
polyPointer addPoly(polyPointer,polyPointer);
main()
{
polyPointer p1,p2,p3;
p1=malloc(sizeof(polyNode));
p1->link=NULL;
p2=malloc(sizeof(polyNode));
p2->link=NULL;
insertTerm(2,2,p1);
insertTerm(5,5,p1);
insertTerm(7,4,p2);
insertTerm(-3,0,p2);
insertTerm(4,4,p2);
p3=addPoly(p1,p2);
printf("n");
printPoly(p3);
printf("n");
printPoly(p2);
printf("n");
printPoly(p1);
}
void insertTerm(int coef,int expon,polyPointer root)
{
if(root->link)
{
while(root->link && root->link->expon>=expon)
root=root->link;
}
if(root->expon==expon)
{
root->coef+=coef;
return;
}
polyPointer temp;
temp=malloc(sizeof(polyNode));
temp->coef=coef;
temp->expon=expon;
temp->link=root->link;
root->link=temp;
}
void printPoly(polyPointer root)
{
printf("n");
while(root->link)
{
printf("(%dx^%d)+",root->link->coef,root->link->expon);
root=root->link;
}
}
polyPointer addPoly(polyPointer p1, polyPointer p2)
{
polyPointer p3;
p3=malloc(sizeof(struct polyNode));
p3->link=NULL;
while(p1->link && p2->link)
{
while(p2->link && (p1->link->expon >= p2->link->expon))
{
insertTerm(p2->link->coef,p2->link->expon,p3);
p2=p2->link;
}
while(p2->link && p1->link && (p2->link->expon >= p1->link->expon))
{
insertTerm(p1->link->coef,p1->link->expon,p3);printf("1");
p1=p1->link;
}
}
while(p1->link)
{
insertTerm(p1->link->coef,p1->link->expon,p3);
p1=p1->link;
}
while(p2->link)
{
insertTerm(p2->link->coef,p2->link->expon,p3);
p2=p2->link;
}
return p3;
}
编译器
将根据编译器设置发出警告或错误(您可以对其进行设置,以便不再将其标记为错误)。但我会做以下事情...malloc 返回一个 void*,这会导致类型不匹配,因为您将其分配给多边形指针。如果将返回值强制转换为适当的类型,这应该可以消除错误,如下所示:
p1= (polyPointer)malloc(sizeof(polyNode));
所有其他分配的同上。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 复制列表初始化的隐式转换的等级是多少
- 正在将指针转换为范围
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 是否可以从int转换为enum类类型
- 了解 GLM- openGL 中的相机转换
- 无法在 Borland C++ 中将'void*'转换为 *poly 节点错误