amazondefy 2020-10-19 21:59 采纳率: 0%
浏览 32

C中创建链表用malloc申请动态空间后为何指针域可以一级一级无限展开?

图片说明
我在Xcode中练习链表的创建时遇到个问题,代码可以正常运行,
只是我在调试时发现链表每个结点的指针域都可以一级一级展开,
如截图所示,我的代码是按照书上敲下的,应该没有大问题,所以想了解下链表中这种指针域无限展开是什么原理?多谢各位了!

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

struct NODE
{

    int data;
    struct NODE *next;
};

struct NODE *CreateLink(void);
void OutputLink(struct NODE *head);

int main(void)
{
    struct NODE *head;
    head = CreateLink();
    OutputLink(head);


    return 0;
}


struct NODE *CreateLink(void)
{
    int len;
    int i;
    int val;



    struct NODE *head = malloc(sizeof(*head));
    struct NODE *move = head;
    move->next = NULL;
    if (NULL == head) {
        printf("动态内存分配失败,程序终止\n");
        exit(-1);
    }
    printf("请输入您需要生成的链表结点的个数: len = ");
    scanf("%d",&len);

    for (i = 0; i < len; i++) {
        struct NODE *fresh = malloc(sizeof(*fresh));
        if (NULL == fresh) {
            printf("分配失败,程序终止!");
            exit(-1);
        }
        printf("请输入第%d个结点的值: ",i + 1);
        scanf("%d", &val);
        fresh->data = val;

        move->next = fresh;
        fresh->next = NULL;
        move = fresh;
    }

    return head;
}
void OutputLink(struct NODE *head)
{
    struct NODE *move = head;
//    move = move->next;
    while (move->next != NULL) {
        printf("%d ", move->next->data);
        move = move->next;
    }
    printf("\n");
}


  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 15:24
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失