C++算法之双向链表的代码

工作闲暇时间,把代码过程较好的代码片段收藏起来,下边资料是关于C++算法之双向链表的代码,应该是对各朋友有些用处。 

typedef struct _DOUBLE_LINK_NODE  
{  
    int data;  
}DOUBLE_LINK_NODE; 复制代码
(2)创建双向链表节点 

{  
    assert(NULL != pDLinkNode);  
  
    memset(pDLinkNode, 0, sizeof(DOUBLE_LINK_NODE));  
    pDLinkNode->data = value;  
    return pDLinkNode;  
}复制代码
 (3)删除双向链表 

扫描二维码关注公众号,回复: 4789711 查看本文章

{  
        return ;  
  
    free(pNode);  
    delete_all_double_link_node(pDLinkNode);  
}复制代码
(4)在双向链表中查找数据

                                
                        
                                


{  
    if(NULL == pDLinkNode)  
        return NULL;  
  
    while(NULL != pNode){  
        if(data == pNode->data)  
            return pNode;  
        pNode = pNode ->next;  
    }  
      
    return NULL;  
} 复制代码
(5)双向链表中插入数据

                                
                        
                                

{  
  
    if(NULL == ppDLinkNode)  
        return FALSE;  
  
        pNode = create_double_link_node(data);  
        assert(NULL != pNode);  
        return TRUE;  
    }  
  
        return FALSE;  
  
    pNode = create_double_link_node(data);  
    assert(NULL != pNode);  
  
    while(NULL != pIndex->next)  
        pIndex = pIndex->next;  
  
    pNode->prev = pIndex;  
    pNode->next = pIndex->next;  
    pIndex->next = pNode;  
    return TRUE;  
} 复制代码
(6)双向链表中删除数据 

{  
        return FALSE;  
  
    if(NULL == pNode)  
        return FALSE;  
  
        }else{  
        }  
  
    }else{  
        if(pNode->next)  
            pNode->next->prev = pNode->prev;  
        pNode->prev->next = pNode->next;  
    }  
  
    free(pNode);  
    return TRUE;  
} 复制代码
(7)统计双向链表中数据的个数 

{  
    int count = 0;  
  
    while(NULL != pNode){  
        count ++;  
        pNode = pNode->next;  
    }  
    return count;  
} 复制代码
(8)打印双向链表中数据

                                
                        
                                

{  
  
    while(NULL != pNode){  
        printf("%dn", pNode->data);  
        pNode = pNode ->next;  
    }  
} 复制代码
注意:今天我们讨论的双向链表是非循环的,大家可以考虑一下如果改成循环双向链表,应该怎么写?如果是有序的循环双向链表,又该怎么写?                                                                                                                                             


猜你喜欢

转载自juejin.im/post/5c302c05518825233b4e5ec3