| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 456 人关注过本帖
标题:链表删除问题,只能删除第一个成员,是什么问题???
只看楼主 加入收藏
jxb8888
Rank: 2
等 级:论坛游民
帖 子:21
专家分:32
注 册:2015-4-28
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
链表删除问题,只能删除第一个成员,是什么问题???
/*声明链表结构,并有指向下一个结构的指针*/
struct List   
    {
    char Name[TSIZE];
    char Model[TSIZE];
    float Width;
    float yaxiandepth ;
    struct List *next; /*指向下一个结构的指针*/
    };

struct List *head = NULL ;    /*声明一个指向链表的头部指针*/
   
struct List *prev , *current ;    /*声明前指针,当前指针*/

void list_delete()
{
    char key[TSIZE];
    printf("\n\t删除型号: ");   
    scanf("%s",key);
   
    int r;
   
    struct List *ptmp ;    //声明一个链表节点临时针指
   
    current=head;
    while(current!=NULL)
        {                 
            r=strcmp(current->Model,key);
            if(!r)
            {
                    ptmp = current->next ;        //保存当前的下一个地址
                    free(current);                //释放当前指针                    
                    current=ptmp ;                //把下一个地址赋值给当前指针                                 
                    printf("\n\t已删除%s...\n\n",key);
            }        
        current=current->next ;        
        }            
}
搜索更多相关主题的帖子: current 型号 
2015-07-05 11:02
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:10 
简单说说:
  
  对于链表:删除头成员的问题 流程如下
  
  1 把head 地址写入current
  2 判断current为空则结束
  3 如果current 不为空 那么把next写入 head,current ++
  4 循环 依次从后往前写入各个值 到空结束
  5 成功

初步看起来 你的涉及head的操作 少了一步
2015-07-05 12:46
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
收藏
得分:10 
ptmp=current;
current=current->next;
free(ptmp);
2015-07-05 14:18
lowrie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:81
专家分:138
注 册:2015-3-12
收藏
得分:0 
不知这样改行不,你试下
2015-07-05 14:19
快速回复:链表删除问题,只能删除第一个成员,是什么问题???
数据加载中...
 
   



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

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