7.8作业


单向链表

//按值修改                                                       
int value_change(linkListPtr H,DataType e,DataType value)        
{                                                                
    if(NULL==H || empty(H))                                      
    {                                                            
        printf("修改失败\n");                                    
        return 0;                                                
    }                                                            
                                                                 
    //找到要修改的值所在的节点                                   
    linkListPtr p=H;                                             
    for(int i=0;i<H->len;i++)                                    
    {                                                            
        p=p->next;                                               
        if(p->data==value)                                       
        {                                                        
            p->data=e;                                           
            return 1;                                            
        }                                                        
    }                                                            
    //找不到这数据                                               
    printf("没有这个数据");                                      
    return 0;                                                    
}                                                                
                                                                 
//按值查找,返回当前节点的地址                                   
linkListPtr value_find(linkListPtr H,DataType value)             
{                                                                
    if(NULL==H || empty(H))                                      
    {                                                            
        printf("查找失败\n");                                    
        return NULL;                                             
    }                                                            
                                                                 
    //找到要查找的值所在的节点                                   
    linkListPtr p=H;                                             
    for(int i=0;i<H->len;i++)                                    
    {                                                            
        p=p->next;                                               
        if(p->data==value)                                       
        {                                                        
            return p;                                            
        }                                                        
    }                                                            
    printf("没有这个数据");                                      
    return NULL;                                                 
}                                                                
                                                                 
                                                                 
//反转                                                           
linkListPtr reverse(linkListPtr H)                               
{                                                                
    if(NULL==H || H->len<=1)                                     
    {                                                            
        printf("反转失败\n");                                    
        return NULL;                                             
    }                                                            
                                                                 
    linkListPtr H2=H->next;                                      
    H->next=NULL;                                                
    linkListPtr q=NULL;                                          
    while(H2!=NULL)                                              
    //for(int i=0;i<H->len;i++)                                  
    {                                                            
        q=H2;                                                    
        H2=H2->next;                                             
        //头插                                                   
        q->next=H->next;                                         
        H->next=q;                                               
    }                                                            
    return H;                                                    
}                                                                
                                                                 
                                                                 
//销毁链表                                                       
void free_link(linkListPtr H)                                    
{                                                                
    if(NULL==H)                                                  
    {                                                            
        printf("销毁失败\n");                                    
    }                                                            
    while(H->next!=NULL)                                         
    {                                                            
        tail_del(H);                                             
    }                                                            
    free(H);                                                     
    H=NULL;                                                      
}                                                                                                                               

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值