创建原始列表的子列表?

时间:2016-10-02 00:24:15

标签: c linked-list

我试图创建一个函数,从列表和原始列表中取两个参数位置,然后将索引的数字复制到列表中。我还包括列表和头部的结构。我得到了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;

}

1 个答案:

答案 0 :(得分:0)

这一切都无可救药地存在缺陷。

您需要使用链接列表获取模式。结构很好,但代码在指示位置崩溃的事实告诉我pos_list没有正确设置。

使用此模式迭代列表

list mylist;
link ptr;
for(ptr = mylist->first; ptr != NULL; ptr = ptr->next)
{
   /* loop body */
}

现在编写一个测试函数来打印出两个参数并确定它们是有效的。