在这个特殊的问题中,我试图找到正在发生的分段错误。我知道在创建K的个别数字的链接列表时出错。
struct Node
{
int data;
struct Node *next;
};
int n1 = 0;
int n2 = 0;
int k = 1;
int calc(Node *h)
{
int sum=0;
for( ; h != NULL ; h = h->next)
sum=(sum*10)+h->data;
return sum;
}
Node* Lists(Node *headA, Node* headB)
{
n1 = calc(headA);
n2 = calc(headB);
int k = n1 + n2;
Node *temp;
temp->data=k%10;
while(k>0)
{
k=k/10;
Node *t1=new Node;
t1->data=k%10;
t1->next=temp;
temp=t1;
}
return temp;
}
答案 0 :(得分:0)
错误存在于以下代码中:
Node *temp;
temp->data = k % 10;
具体来说,temp
被声明为指向Node
结构的指针,但从未在内存中给出有效位置指向,所以它包含一个垃圾地址,很可能是指一些不可写的区域。
如果你想解决这个问题,你首先要为变量分配一个区域,如下所示:
Node *temp = new Node;
然后在完成后将其标记为已释放(通过调用delete
)。我还建议您更好地格式化代码,因为从观看者的角度来看,这不太方便。