标题:链表删除问题,只能删除第一个成员,是什么问题???
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455074-1-1.html




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

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