我试图使一个函数需要两个参数位置从列表和原始列表,然后复制索引数到列表。我还包括了列表和头部的Struct。我得到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;
}
这一切都是无可救药的缺陷。
你需要用链表找到规律。结构很好,但是代码在指定位置崩溃的事实对我来说表明pos_list没有正确设置。
使用模式
遍历列表list mylist;
link ptr;
for(ptr = mylist->first; ptr != NULL; ptr = ptr->next)
{
/* loop body */
}
现在编写一个测试函数来打印两个参数并确定它们是否有效。