我试图创建一个函数,从列表和原始列表中取两个参数位置,然后将索引的数字复制到列表中。我还包括列表和头部的结构。我得到了EXC_BAD_ACCESS
错误我对该行进行了评论。
代码:
struct node_struct {
Item item;
link next;
};
struct list_struct {
link first;
int length;
};
list sublist(list A, list pos_list) {
int index = 0;
link tempForindex = malloc(sizeof *tempForindex);
link temp2 = malloc(sizeof *temp2);
list finale = malloc(sizeof *finale);
link temp3 = malloc(sizeof *temp3);
tempForindex = pos_list->first;
temp2 = A->first;
temp3 = finale->first;
int counter = 0;
while(tempForindex->next != NULL)
{
index = tempForindex->item;//EXC_BAD_ACCESS code1
counter = 0;
while(temp2->next != NULL)
{
if (counter == index)
{
temp3->item = temp2->item;
temp2 = A->first;
temp3 = temp3->next;
break;
}
temp2 = temp2->next;
counter++;
}
tempForindex = tempForindex->next;
}
return finale;
}
答案 0 :(得分:0)
这一切都无可救药地存在缺陷。
您需要使用链接列表获取模式。结构很好,但代码在指示位置崩溃的事实告诉我pos_list没有正确设置。
使用此模式迭代列表
list mylist;
link ptr;
for(ptr = mylist->first; ptr != NULL; ptr = ptr->next)
{
/* loop body */
}
现在编写一个测试函数来打印出两个参数并确定它们是有效的。