首页 > 解决方案 > 使用结构变量时链表中的问题

问题描述

使用内存分配的链表代码:

#include<stdio.h>
struct node
{
    int val;
    struct node *point;

};
int main()
{
    struct node *head;
    head=(struct node* )  malloc(sizeof(struct node ));
    void create(struct node* start);
    void print(struct node* start);


    create(head);
    print(head);

    return 0;
}
void create(struct node* start)
{
    int test,a=1;
    struct node* cur;
    cur=start;

    while(scanf("%d",&test)!=EOF)
    {       if(a!=1)
            {
                cur=cur->point;
            }
            cur->point=(struct node* )  malloc(sizeof(struct node ));
            cur->val=test;

            a++;
            printf("---------------");
            printf("%d\n",cur);
            printf("%d\n",cur->val);
            printf("%d\n",cur->point);
            printf("%d\n",a);
            printf("---------------");
    }
    cur->point=NULL;
    return;
}
void print(struct node* start)
{
        struct node* cur;
        cur=start;
        while(cur!=NULL)
        {
            printf("%d ",cur->val);
            cur=cur->point;
        }

        return;
}

使用结构变量的链表代码:

#include<stdio.h>
struct node
{
    int val;
    struct node *point;

};
int main()
{
    struct node *head,link;
    head=&link;
    void create(struct node* start);
    void print(struct node* start);


    create(head);
    print(head);

    return 0;
}
void create(struct node* start)
{
    int test,a=1;
    struct node* cur;
    cur=start;

    while(scanf("%d",&test)!=EOF)
    {   if(a!=1)
        {
            cur=cur->point;

        }
        struct node link;
        cur->point=&link;
        cur->val=test;

        a++;

        printf("---------------");
        printf("%d\n",cur);
        printf("%d\n",cur->val);
        printf("%d\n",cur->point);
        printf("%d\n",&link);
        printf("%d\n",a);
        printf("---------------");
    }
    cur->point=NULL;
    return;
}
void print(struct node* start)
{
     struct node* cur;
     cur=start;
     while(cur!=NULL)
     {
        printf("%d ",cur->val);
        cur=cur->point;
     }

     return;
} 

当我使用第二个代码时,它不能正常工作。它只打印两个值。

在 create() 的 while 循环中,我使用 struct 节点类型变量声明。

这就是为什么它应该声明一个新的结构节点类型链接变量,并且在每次执行中都应该看到一个新的内存(结构节点链接)地址。

所以有什么问题?

我是一个使用C学习数据结构的新手。请用简单的语言解释一下。

标签: clinked-list

解决方案


推荐阅读