c-最简单的链表创建和打印数据



下面是C中的一个简单代码段,用于创建链接列表并打印列表中包含的所有元素。

用户被要求输入整数数据,直到输入零为止,这标志着用户输入的终止;一旦数据保存在链表中,程序就会打印列表中存储的所有元素,然后完成执行。

我无法运行它,每次它都会出现"分段错误"错误,请检查并告诉我哪里错了(使用gcc 4.8.2)

代码:

struct node
{
    int data;
    struct node * next;
};
struct node * createLinkedList() 
{
    int x;
    struct node * start;
    start = NULL;
    printf("Input 0 to end, Insert elements :n");
for(scanf("%d", &x); x ;scanf("%d", &x))
{
    struct node * temp = (struct node *) malloc(sizeof(struct node));
    if (temp)
    {
        temp->data = x;
        temp->next = NULL;
        if(start == NULL) {
            start = temp;
        } else {
            start->next = temp;
            start = temp;
        }
    }
}   
return start;
}
void printLinkedList(struct node * start)
{
    if (start == NULL) {
        printf("Linked List is empty!n");
    } else {
        printf("nPrinting Linked List : n");
        struct node * s;
        s = start;
        while(s != NULL) 
        {
            printf("%dn", s->data);
            s = s->next;
        }
    }
}
int main(int argc, char const *argv[])
{
    struct node * start;
    start = NULL;
    start = createLinkedList();
    printLinkedList(start);
    return 0;
}

这部分代码

    if(start == NULL) {
        start = temp;
    } else {
        start->next = temp;
        start = temp;
    }

无效。必须有

    if(start == NULL) {
        start = temp;
    } else {
        temp->next = start;
        start = temp;
    }

此外,您还需要一个删除列表中所有节点的函数。

相关内容

  • 没有找到相关文章

最新更新