鱼C论坛

 找回密码
 立即注册
查看: 2152|回复: 1

关于链表的连接问题

[复制链接]
发表于 2016-6-17 21:45:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
struct shop *insert(struct shop *head,struct shop *opp)     /*用于商品的插入*/
{
        struct shop *x,*x2;
        x2=head;
        x=opp;  /*指要插入的商品信息结点*/
        if(head==NULL)
        {
                head=x;
                head->next=NULL;
        }
        else{
                while((x2->next!=NULL)){               
                        x2=x2->next;
                }
                        x2->next=x;
                        x->next=NULL;
        }
        return head;
}

void printfshop()
{
        FILE *fp;
        struct shop *p,*head,*k;
        struct shop a;
        head=NULL;
        int size=sizeof(struct shop);
        while(!feof(fp))
        {
                p=(struct shop *)malloc(size);       
                p->number=a.number;
                strcpy(p->name,a.name);
                p->purchase=a.purchase;
                p->sell=a.sell;
                p->purnum=a.purnum;
                p->sellnum=a.sellnum;
                p->price=a.price;
                p->remain=a.remain;
                p->money=a.money;
                head=insert(head,p);
        }

代码大致这样
问题如下:
第一: head=insert(head,p) 有什么作用 其中head=? 它会被赋值什么?
第二:insert函数中 x->next=NULL; 它有什么用?
第三:insert函数中 把输入的数据连接到链表*x2中 那return head的用途是什么?
第四: insert函数中 为什么x2它不用x2->next=NULL?

以上是我的些小问题 如果能有所帮助的话 希望帮我解决下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-2 11:42:59 | 显示全部楼层
答:
  (1):head = insert(head,p)返回的头指针,也就是说你把p插进去了,head有所增加然后返回出来,被赋值为带有p的新的head
  (2):x->next= NULL,仅仅就是你的head最后的指针域为空
  (3):return head就是返回新的带有p的头结点
  (4):因为你x2后面插入了x,x2->next是指向了x,所以不能为NULL
纯属一家之言,有错误麻烦指出
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-28 13:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表