为什么我的LinkListCreate函数停止运行?

用户名

我想通过创建链接列表CreateLinkList(LinkList *L, int n),但是printf的输出0 1仅为。

它似乎停止在中的第3行CreateLinkList

我该如何解决?

void CreateLinkList(LinkList *L, int n)
{
    srand(time(0));
    printf("1\n");
    *L = (Node*)malloc(sizeof(Node)); \\ it seems to stop here
    printf("2\n");
    Node *flag = *L; 
    printf("3\n");
    for (int i=0; i<n; i++)
    {
        Node *newNode = (Node*)malloc(sizeof(Node));
        newNode->data = rand() %100+1;

        flag->next = newNode; 
        flag = newNode;
    }
    printf("4\n");
    flag->next = NULL;
    printf("5\n");
}

int main()
{
    LinkList *p;
    printf("0");
    CreateLinkList(p, 10);
    return 0;
}

LinkListNode被定义为:

typedef struct
{
    int data;
    struct Node *next;
} Node;

typedef Node *LinkList; 
来自莫斯科的弗拉德

首先,这个结构定义

typedef struct
{
    int data;
    struct Node *next;
} Node;

是无效的。在结构内,类型struct Node *与typedef名称不同Node

改写

typedef struct Node
{
    int data;
    struct Node *next;
} Node;

节点L和节点标志均未初始化。

*L = (Node*)malloc(sizeof(Node)); \\ it seems to stop here
printf("2\n");
Node *flag = *L; 

所以这句话

flag->next = newNode; 

调用未定义的行为。

此外,指针p也未在main中初始化

LinkList *p;

所以即使这个电话

*L = (Node*)malloc(sizeof(Node)); 

还调用未定义的行为。

无论如何,使用像这样的typedef是一个坏主意

typedef Node *LinkList; 

因为它只会使代码的读者感到困惑。

可以定义该功能,如演示程序中所示。

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

typedef struct Node
{
    int data;
    struct Node *next;
} Node;

typedef Node *LinkList; 

void CreateLinkList( LinkList *head, unsigned int n )
{
    const int MAX_VALUE = 100;

    srand( ( unsigned int )time( NULL ) );

    for ( unsigned int i = 0; i < n; i++ )
    {
        *head = malloc( sizeof( Node ) );

        ( *head )->data = rand()  % MAX_VALUE + 1;
        ( *head )->next = NULL;

        head = &( *head )->next;
    }
}

void print( LinkList head )
{
    for ( ; head != NULL; head = head->next )
    {
        printf( "%d -> ", head->data );
    }

    puts( "NULL" );
}

int main(void) 
{
    LinkList head = NULL;

    CreateLinkList( &head, 10 );

    print( head );

    return 0;
}

程序输出可能看起来像

14 -> 40 -> 17 -> 54 -> 8 -> 48 -> 40 -> 25 -> 99 -> 41 -> NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我的JavaScript函数无法运行?

来自分类Dev

为什么我的bash脚本因ffmpeg而停止运行?

来自分类Dev

为什么我的HTML按钮不能运行我的JavaScript函数?

来自分类Dev

为什么在元素完全滚动之前我的onscroll函数停止了?

来自分类Dev

为什么在System.in.read()函数之后我的程序停止?

来自分类Dev

为什么我的函数停止返回正确的值?

来自分类Dev

为什么我的lambda函数无法按预期运行?

来自分类Dev

为什么我的函数不能在.resize()上运行?

来自分类Dev

为什么我的ajax函数无法按预期运行?

来自分类Dev

为什么我的函数在窗口调整大小之前运行?

来自分类Dev

为什么我的程序“停止”了?

来自分类Dev

当我在foreach和for循环中放入变量时,为什么我的脚本停止运行

来自分类Dev

为什么我按下按钮后我的应用程序停止运行

来自分类Dev

为什么TRACE会停止运行?

来自分类Dev

为什么这会提前停止运行?

来自分类Dev

为什么我永远使用节点应用程序进程时会使其停止运行?

来自分类Dev

在nodejs中运行http请求以测试我的rest api时,它停止了,为什么?

来自分类Dev

为什么在第二遍打印一行后,我的线程停止运行?

来自分类Dev

为什么当我创建函数的新实例时函数内部的代码会运行

来自分类Dev

为什么我不告诉我,Python Threading会运行一个函数?

来自分类Dev

为什么在我的系统状态时,“活动:活动(运行)”行仅显示正在运行还是已停止?

来自分类Dev

我如何找出为什么gdb停止了

来自分类Dev

为什么我的UIActivityIndicator不停止旋转?

来自分类Dev

为什么我的BackgroundService立即停止?

来自分类Dev

为什么我的UIActivityIndicator不停止旋转?

来自分类Dev

为什么我的按钮永不停止?

来自分类Dev

为什么我的键盘停止工作?

来自分类Dev

为什么我的 foreach 循环停止了?

来自分类Dev

为什么我导出的函数不是函数?

Related 相关文章

  1. 1

    为什么我的JavaScript函数无法运行?

  2. 2

    为什么我的bash脚本因ffmpeg而停止运行?

  3. 3

    为什么我的HTML按钮不能运行我的JavaScript函数?

  4. 4

    为什么在元素完全滚动之前我的onscroll函数停止了?

  5. 5

    为什么在System.in.read()函数之后我的程序停止?

  6. 6

    为什么我的函数停止返回正确的值?

  7. 7

    为什么我的lambda函数无法按预期运行?

  8. 8

    为什么我的函数不能在.resize()上运行?

  9. 9

    为什么我的ajax函数无法按预期运行?

  10. 10

    为什么我的函数在窗口调整大小之前运行?

  11. 11

    为什么我的程序“停止”了?

  12. 12

    当我在foreach和for循环中放入变量时,为什么我的脚本停止运行

  13. 13

    为什么我按下按钮后我的应用程序停止运行

  14. 14

    为什么TRACE会停止运行?

  15. 15

    为什么这会提前停止运行?

  16. 16

    为什么我永远使用节点应用程序进程时会使其停止运行?

  17. 17

    在nodejs中运行http请求以测试我的rest api时,它停止了,为什么?

  18. 18

    为什么在第二遍打印一行后,我的线程停止运行?

  19. 19

    为什么当我创建函数的新实例时函数内部的代码会运行

  20. 20

    为什么我不告诉我,Python Threading会运行一个函数?

  21. 21

    为什么在我的系统状态时,“活动:活动(运行)”行仅显示正在运行还是已停止?

  22. 22

    我如何找出为什么gdb停止了

  23. 23

    为什么我的UIActivityIndicator不停止旋转?

  24. 24

    为什么我的BackgroundService立即停止?

  25. 25

    为什么我的UIActivityIndicator不停止旋转?

  26. 26

    为什么我的按钮永不停止?

  27. 27

    为什么我的键盘停止工作?

  28. 28

    为什么我的 foreach 循环停止了?

  29. 29

    为什么我导出的函数不是函数?

热门标签

归档