| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1245 人关注过本帖
标题:关于通讯录通过名字来删除信息,如果我先删除头节点的信息,就会出问题
只看楼主 加入收藏
GreenhandG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-10
收藏
得分:0 
回复 9楼 TonyDeng
我按您的方式把我1L的代码重新改了下,一开始出现的问题解决了,但还不是十分清楚其中的原理。
未改前我会出现这种情况:假设张三是头结点的信息
The contact name is :张三
The contact number is:123456789
输入要删除的名字:张三
在头结点显示的那个地方
The contact name is:乱码
The contact number is :123456789
把代码改成:
void deletbyname(struct telephone** head,char *name)
{
    struct telephone *current;
    struct telephone *pre;
    int p=0;
    current=*head;
     if(strcmp(current->name,name)==0)
     {
         *head=current->next;
         free(current);
         p=1;
         return;
    }
    while(current!=NULL)
    {
        if(strcmp(current->name,name)==0)
        {
            pre->next=current->next;
            free(current);
            p=1;
            break;
        }
        pre=current;
        current=current->next;
    }
    if(p==0)
        printf("查无此人\n");
}        
       就解决了                  
2015-06-22 18:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
解決了?你刪別的學生試試,看刪沒刪著指定的那個。

授人以渔,不授人以鱼。
2015-06-22 20:56
GreenhandG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-10
收藏
得分:0 
回复 12楼 TonyDeng
嗯,都可以删,么问题
2015-06-22 22:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
函数中出现两段重复功能的代码是为什么?

授人以渔,不授人以鱼。
2015-06-22 22:16
GreenhandG
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2015-6-10
收藏
得分:0 
回复 14楼 TonyDeng
本来是想把它分为三部分,删头节点,中间节点,尾节点,后面把中间和尾部的结合在了一起,吧头节点单独考虑的。如果把头结点的代码删掉 就会出错
大神,关于**head和*head的区别及原理,我还是想不通,麻烦您再点拨一下

[ 本帖最后由 GreenhandG 于 2015-6-22 23:30 编辑 ]
2015-06-22 22:22
快速回复:关于通讯录通过名字来删除信息,如果我先删除头节点的信息,就会出问题 ...
数据加载中...
 
   



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

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