c - C 中的简单链表实现

标签 c linked-list

我尝试打印我的列表超过 3 次..

应该是这样的

A: 5  B: 2 C: 3
A: 6  B: 4 C: 1
A: 7  B: 3 C: 15
A: 5  B: 2 C: 3
A: 6  B: 4 C: 1

但是第三次​​之后,它崩溃了..

请查看我的代码并告诉我如何修复它..

PS:此外,我可以在第二次/第三次运行中编辑列表的值吗?

提前致谢,,

   #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>

    struct list {
            int a,b,c;
            struct list *next;
    };

    struct list *init_list ( int a, int b, int c );
    void list_print( struct list *list );

    struct list *init_list ( int a, int b, int c ){
            struct list *list;
            list = malloc(sizeof(struct list));
            if (list == NULL) {
                    printf("Error: Memory allocation failure.\nTerminating.\n");
                    exit(1);
            }

            list->a = a;
            list->b = b;
            list->c = c;
            list->next = NULL;
            return (list);
    }

    void list_print(struct list *list) {
            int j = 0;
            struct list *list2;
            do {
                            list2 = list;
                            struct list *tmp; 
                            tmp = list;

                            printf("A: %d  B: %d C: %d\n" ,tmp->a, tmp->b, tmp->c);
                            list = list->next;

                            j++;
            } while (j < 4);
    }


    int main (int argc, const char * argv[])
    {
        struct list *linked_list_1, *linked_list_2;
        linked_list_1 = init_list(5, 2, 3);
        linked_list_1->next = init_list(6, 4, 1); linked_list_2 = linked_list_1->next;
        linked_list_2->next = init_list(7, 3, 15); 

        list_print(linked_list_1);

        return 0;
    }

最佳答案

据我了解,你有list1->list2->list3->NULL。 因此,当 j = 0 时,打印 list1,然后移至 list2。 j 现在等于 1,您打印 list2 并移动到下一个元素,j = 2 您再次打印并移动到 NULL。尝试打印 NULL 指针的内容会导致程序崩溃

关于c - C 中的简单链表实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7673652/

相关文章:

c - GetMessageW 正在阻塞调用线程,没有接收到任何消息

检查 C 库的版本(动态加载)

c - 返回错误顺序的字符串二叉树

c - 是否可以列出系统中当前 <LIVE> 的所有 sk_buff?

java - 设置值链表节点Java

c - 当 printf 的相应参数不是 short/char 时,使用 h 或 hh 长度修饰符是否非法?

java - 自定义链表实现的insert方法?

java - 插入排序的数据结构,可以获得子集的长度

c++ - 在多线程中消耗链表队列

c++ - 为什么将项目添加到链表会导致段错误?