标题:关于新建链表结点的理解问题,求指正。
取消只看楼主
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
结帖率:73.68%
已结贴  问题点数:20 回复次数:0 
关于新建链表结点的理解问题,求指正。
#include<stdio.h>
#include<stdlib.h>

struct data{
    int snum;
    char sname[10];
    int sage;
    char ssex[2];
    struct data *next;
};
struct data* DEAL(){
        struct data *head,*data,*update,*output;
         int num=1;
        int ACK;
        data=update=(struct data*)malloc(sizeof(struct data));
        head=NULL;
        while(1){
            if(num==1){
                data->snum=num;
                printf("INPUT sname:");
                scanf("%s",&data->sname);
                printf("INPUT sage:");
                scanf("%d",&data->sage);
                printf("INPUT ssex:");
                scanf("%s",&data->ssex);
                head=data;
                head->next=NULL;
                printf("DO YOU WANT TO NEXT?(1-YES,0-NO)");
                scanf("%d",&ACK);
                if(ACK!=1){
                    return head;
                }
                num++;
            }
            system("CLS");
            update=(struct data*)malloc(sizeof(struct data));
            update->snum=num;
            printf("INPUT sname:");
            scanf("%s",&update->sname);
            printf("INPUT sage:");
            scanf("%d",&update->sage);
            printf("INPUT ssex:");
            scanf("%s",&update->ssex);
            data->next=update;
            data=update;
            data->next=NULL;

            printf("DO YOU WANT TO NEXT?(1-YES,0-NO)");
            scanf("%d",&ACK);
            if(ACK!=1){
                return head;
            }
            num++;
            }
}
int main(){
    system("COLOR 0E");
    system("CLS");
    struct data *output;
    for(output=DEAL();output!=NULL;output=output->next){
        printf("%d %s %d %s\n",output->snum,output->sname,output->sage,output->ssex);
    }   

    return 0;
}

  这是近期写的一个动态单链表的例程,在对于这部分的理解,望得到他人指正,谢谢。

            update=(struct data*)malloc(sizeof(struct data));
            update->snum=num;
            printf("INPUT sname:");
            scanf("%s",&update->sname);
            printf("INPUT sage:");
            scanf("%d",&update->sage);
            printf("INPUT ssex:");
            scanf("%s",&update->ssex);
            data->next=update;
            data=update;
            data->next=NULL;
  对于这段代码,我是这么理解的,首先,申请一个连续的空间,并让update指向这个空间,然后是给update的成员变量赋值,把update指向的新分配的空间地址赋给data的next成员指针变量,算是给data开辟了新空间了,然后把update赋给data,这样一来,我想举个不太恰当的例子,update就算是一个织毛衣的线扣吧……(并没有织过毛衣,就是忽然想到这么个例子了)其实,我的主要问题也是在于“data=update;”这句上缺乏理解。
搜索更多相关主题的帖子: struct data update printf scanf 
2018-05-09 12:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486786-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017691 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved