-1

我将乘以用户必须输入的两个多项式。

在第一步(从用户那里获取信息)我得到了这个错误:

Unhandled exception at 0x00a315cb in linked polinomials.exe:
  0xC0000005: Access violation writing location 0x00000000.

之后我想输入多项式的另一个元素后出现此错误。

struct polynomial{

    float coef ;
    int exp ;
    polynomial *next ;
} *first, *second ,*result;
first = new(polynomial);
   //init first
first ->coef = 0;
first->exp = 0 ;
first->next = 0;
while(ch != 'n')
{
    cin >> temp_c ;
    cin >> temp_e ;
    first->coef = temp_c;
    first->exp = temp_e;
    cout << "Do you want to enter another ? (y or n) :" << endl;
    ch = getch();
    first = first->next;
}
4

4 回答 4

0

在第一次迭代中:

first = first->next;

你分配firstNULL,因为那first->next是最初的。您需要在分配之前为其分配空间。

first->next = new polynomial;
first = first->next;

另外,您确定要丢失指向第一个节点的指针吗?

于 2012-07-17T08:14:18.403 回答
0

您没有为整个列表分配内存。你需要写这样的东西:
first->next = new polynomial();
first = first->next;

否则,您将尝试在NULL地址处读取内存。

于 2012-07-17T08:15:05.417 回答
0

相反,您应该这样做:

second = new(polynomial);
first->next=second;
first=second;
于 2012-07-17T08:15:47.677 回答
0
first = first->next;

在此操作之前,您必须为新链接分配内存,例如

first->next = new polynomial();

只有在那之后你才能写

first = first->next;
于 2012-07-17T08:17:23.447 回答