多个指针时报错
下面是代码,几个函数是没问题的,当我在主函数只声明一个Polynominal时都没有问题,但把我主函数里面注释的一句及之后打开后就会报错报错图片在下面。
大佬求助。
#include <stdio.h>
#include <stdlib.h>
typedef struct pNode
{
int codf; // 系数
int exp;// 指数
struct pNode *link;
} PNode;
typedef struct polynominal
{
PNode *head;
} Polynominal;
void Init(Polynominal *, int[], int); // 初始化
void Output(Polynominal *); // 输出
int main(int argc, char const *argv[])
{
Polynominal PS, *P;
P = &PS;
int num = {1, 2, 2, 5, 5, 7};
P = &PS;
Init(P, num, 3);
Output(P);
Polynominal EX, *E;
int nums = {1, 2, 2, 4, 5, 8};
// E = &EX;
// Init(E, nums, 3);
// Output(E);
return 0;
}
void Init(Polynominal *P, int *num, int length)
{
P->head->codf = 0;
P->head->exp = -1;
P->head->link = NULL;
PNode *temp = P->head;
for (int i = 0; i < length; i++)
{
// 创建pnode节点
PNode *node = (PNode *)malloc(sizeof(PNode));
node->codf = num;
node->exp = num;
node->link = NULL;
temp->link = node;
temp = node;
}
}
void Output(Polynominal *P)
{
int flag = 0;
PNode *nowNode = P->head->link;
while (nowNode != NULL)
{
if (flag == 0)
{
if (nowNode->codf == 1)
{
printf("x^%d", nowNode->exp);
}
else
{
printf("%dx^%d", nowNode->codf, nowNode->exp);
}
}
else if (nowNode->codf < 0)
{
printf("%dx^%d", nowNode->codf, nowNode->exp);
}
else
{
if (nowNode->codf == 1)
{
printf("+x^%d", nowNode->exp);
}
else
{
printf("+%dx^%d", nowNode->codf, nowNode->exp);
}
}
nowNode = nowNode->link;
flag = 1;
}
printf("\n");
}
*/ 本帖最后由 jhq999 于 2021-10-20 11:08 编辑
结尾怎么加了个半拉注释符号 */
PNode firstnd;//至少有一个实例吧,都是指针怎么行?
Polynominal PS, *P;
PS.head=&firstnd;
P = &PS;
int num = {1, 2, 2, 5, 5, 7};
P = &PS;
Init(P, num, 3);
jhq999 发表于 2021-10-19 22:57
结尾怎么加了个半拉注释符号 */
感谢,最后*/是上传的时候没删干净,请问在创建Polynominal PS的时候PS不是实例吗 本帖最后由 jhq999 于 2021-10-20 12:34 编辑
海绵布丁 发表于 2021-10-20 12:17
感谢,最后*/是上传的时候没删干净,请问在创建Polynominal PS的时候PS不是实例吗
typedef struct polynominal
{
PNode *head;//这个指针需要实例
} Polynominal; jhq999 发表于 2021-10-20 12:32
好的,谢谢
页:
[1]