列出链接列表中的值

时间:2015-05-11 14:18:36

标签: c

将元素插入链接列表后,我想检索它们。

这是结构:

typedef struct node
{
    int data;
    struct node *next;
} Element;

typedef Element* ROW;

我以:

开始我的清单
void startRow(ROW *row){
    *row = NULL;
}

之后,我使用函数在最后插入:

void insertEnd(ROW *row, int value){
    if(*row==NULL){
        *row = (ROW) (malloc(sizeof(Element)));
        if(*row==NULL){
            return;
        }else{
            (*row)->data = value;
            (**row).next = NULL;
        }
    }
}

为了列出这些值,我使用了这个函数(我计划去除递归,只是玩arround):

void listValues(ROW row){
    if(row==NULL){
        return;
    }
    printf("%d\n", row->data);
    listValues(row->next);
}

我这样称呼它,但只输出第一个元素

int main(){
    ROW row;

    startRow(&row);
    insertEnd(&row, 10);
    insertEnd(&row, 20);

    listValues(row);

    return 0;
}

为什么呢? 它不应该输出完整的清单吗?

1 个答案:

答案 0 :(得分:0)

问题出在方法insertEnd。

你应该链接列表的元素而不是它们:)这样:

void insertEnd(ROW *row, int value){
    if(*row!=NULL){
        ROW *lastElement = (ROW) (malloc(sizeof(Element)));
        if(*lastElement==NULL){
            return;
        }else{
            (*lastElement)->data = value;
            (**lastElement).next = NULL;
            (**row).next = lastElement;
        }
    } else {
        *row = (ROW) (malloc(sizeof(Element)));
        if(*row==NULL){
            return;
        }else{
        (*row)->data = value;
        (**row).next = NULL;
    }
}

像这样,您将链接所有列表元素。