struct phone_info *create(struct phone_info *head)//创建与读入链表数据
{
struct phone_info *pp,*pend;//头指针与尾指针
FILE *fp;
fp=fopen("phone.txt","r");
if(fp!=NULL)
{
int flag;
while(1)//while(1)表示从键盘输入来构建链表,直到用户输入num值为0时终止输入。
{
pp=(struct phone_info*)malloc(sizeof(struct phone_info));
pp=new phone_info;
flag=fscanf(fp,"%s %s %s %s %s %s",pp->name,pp->phone,pp->type,pp->sex,pp->address,pp->email);//从一个流中执行格式化输入
if(flag==EOF)//End Of File表示资料源无更多的资料可读取
break;
if(head==NULL)
head=pp;//表头为空则数据给表头
else
pend->next=pp;//否则添加到文末
pend=pp;
}
if(head!=NULL)
{
pend->next=NULL;//末尾已没有文件
printf("已从文件中读入数据创建链表!\n");
}
delete pp;
fclose(fp);
}
if(head==NULL)
{
while(1)
{
pp=(struct phone_info*)malloc(sizeof(struct phone_info));
pp=new phone_info;
printf("姓名");
scanf("%s",&pp->name);
if(strcmp(pp->name,"000"))//如果(pp->name 完全等于 x)],则...非0,就是1
{
printf("手机\n");
scanf("%s",&pp->phone);
printf("类别\n");
scanf("%s",&pp->type);
printf("性别\n");
scanf("%s",&pp->sex);
printf("地址\n");
scanf("%s",&pp->address);
printf("邮箱\n");
scanf("%s",&pp->email);
}
else
break;
if(head==NULL)//如果开头没有数据
head=pp;//pp的数据给head
else
pend->next=pp;//否则pp的数据添加到文末
pend=pp;
}
pend->next=NULL;//末尾已没有文件数据
delete pp;
}
return head;
}
C语言注释是否正确,pend=pp什么意思
答案:2 悬赏:80 手机版
解决时间 2021-02-05 02:48
- 提问者网友:我一贱你就笑
- 2021-02-04 17:45
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-02-04 19:03
head永远指向头结点,pend永远指向尾节点。
第一次head为空抄的时候,head指向申请的pp,pend也指向pp。
第二次及之后head不为空,pp要链到尾节点后面,也就是pend->next=pp.然后pend=pp,更新尾节点,因为插入zd之后pp变成了尾节点,但下一次插入时pp是重新申请的空间,没有pend就要从head开始循环找到尾节点。
也就是说pend每次都是尾节点。
第一次head为空抄的时候,head指向申请的pp,pend也指向pp。
第二次及之后head不为空,pp要链到尾节点后面,也就是pend->next=pp.然后pend=pp,更新尾节点,因为插入zd之后pp变成了尾节点,但下一次插入时pp是重新申请的空间,没有pend就要从head开始循环找到尾节点。
也就是说pend每次都是尾节点。
全部回答
- 1楼网友:醉吻情书
- 2021-02-04 19:42
你好!
让尾指针也指向头结点
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
正方形一边上任一点到这个正方形两条对角线的 |
阴历怎么看 ? |