一步一步写算法(之双向链表)

一步一步写算法(之双向链表)

ID:18923606

大小:54.00 KB

页数:4页

时间:2018-09-27

一步一步写算法(之双向链表)_第1页
一步一步写算法(之双向链表)_第2页
一步一步写算法(之双向链表)_第3页
一步一步写算法(之双向链表)_第4页
资源描述:

《一步一步写算法(之双向链表)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一步一步写算法(之双向链表)【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing@163.com】   前面的博客我们介绍了单向链表。那么我们今天介绍的双向链表,顾名思义,就是数据本身具备了左边和右边的双向指针。双向链表相比较单向链表,主要有下面几个特点:   (1)在数据结构中具有双向指针   (2)插入数据的时候需要考虑前后的方向的操作   (3)同样,删除数据的是有也需要考虑前后方向的操作   那么,一个非循环的双向链表操作应该是怎么样的呢?我们可以自己尝试一下:   (1)定义双

2、向链表的基本结构1.typedef struct _DOUBLE_LINK_NODE2.{3.    int data;4.    struct _DOUBLE_LINK_NODE* prev;5.    struct _DOUBLE_LINK_NODE* next;6.}DOUBLE_LINK_NODE;   (2)创建双向链表节点1.DOUBLE_LINK_NODE* create_double_link_node(int value)2.{  3.    DOUBLE_LINK_NODE* pDLinkNod

3、e = NULL;4.    pDLinkNode = (DOUBLE_LINK_NODE*)malloc(sizeof(DOUBLE_LINK_NODE));5.    assert(NULL != pDLinkNode);6.  7.    memset(pDLinkNode, 0, sizeof(DOUBLE_LINK_NODE));8.    pDLinkNode->data = value;9.    return pDLinkNode;10.}   (3)删除双向链表1.void delete_all_

4、double_link_node(DOUBLE_LINK_NODE** pDLinkNode)2.{3.    DOUBLE_LINK_NODE* pNode;4.    if(NULL == *pDLinkNode)5.        return ;6.  7.    pNode = *pDLinkNode;8.    *pDLinkNode = pNode->next;9.    free(pNode);10.    delete_all_double_link_node(pDLinkNode);11.}  

5、 (4)在双向链表中查找数据1.DOUBLE_LINK_NODE* find_data_in_double_link(const DOUBLE_LINK_NODE* pDLinkNode, int data)2.{ 3.    DOUBLE_LINK_NODE* pNode = NULL;4.    if(NULL == pDLinkNode)5.        return NULL;6.  7.    pNode = (DOUBLE_LINK_NODE*)pDLinkNode;8.    while(NULL 

6、!= pNode){9.        if(data == pNode->data)10.            return pNode;11.        pNode = pNode ->next;12.    }13.      14.    return NULL;15.}     (5)双向链表中插入数据1.STATUS insert_data_into_double_link(DOUBLE_LINK_NODE** ppDLinkNode, int data)2.{3.    DOUBLE_LINK_

7、NODE* pNode;4.    DOUBLE_LINK_NODE* pIndex;5.  6.    if(NULL == ppDLinkNode)7.        return FALSE;8.  9.    if(NULL == *ppDLinkNode){10.        pNode = create_double_link_node(data);11.        assert(NULL != pNode);12.        *ppDLinkNode = pNode;13.        (

8、*ppDLinkNode)->prev = (*ppDLinkNode)->next = NULL;14.        return TRUE;15.    }  16.  17.    if(NULL != find_data_in_double_link(*ppDLinkNode, data))18.        return FALSE;19.  

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。