关于链表的连接问题
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?
以上是我的些小问题 如果能有所帮助的话 希望帮我解决下! 答:
(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
纯属一家之言,有错误麻烦指出
页:
[1]