• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)

c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++双向链表,c++链表排序,链表c++,c++链表教程,c++链表类等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

(1)定义双向链表的基本结构

(2)创建双向链表节点

    memset(pDLinkNode, 0, sizeof(DOUBLE_LINK_NODE)); 
    pDLinkNode->data = value; 
    return pDLinkNode; 
} 
</div>

(3)删除双向链表

    pNode = *pDLinkNode; 
    *pDLinkNode = pNode->next; 
    free(pNode); 
    delete_all_double_link_node(pDLinkNode); 
}
</div>

(4)在双向链表中查找数据

    pNode = (DOUBLE_LINK_NODE*)pDLinkNode; 
    while(NULL != pNode){ 
        if(data == pNode->data) 
            return pNode; 
        pNode = pNode ->next; 
    } 

    return NULL; 
} 
</div>

(5)双向链表中插入数据

    if(NULL == ppDLinkNode) 
        return FALSE; 

    if(NULL == *ppDLinkNode){ 
        pNode = create_double_link_node(data); 
        assert(NULL != pNode); 
        *ppDLinkNode = pNode; 
        (*ppDLinkNode)->prev = (*ppDLinkNode)->next = NULL; 
        return TRUE; 
    } 

    if(NULL != find_data_in_double_link(*ppDLinkNode, data)) 
        return FALSE; 

    pNode = create_double_link_node(data); 
    assert(NULL != pNode); 

    pIndex = *ppDLinkNode; 
    while(NULL != pIndex->next) 
        pIndex = pIndex->next; 

    pNode->prev = pIndex; 
    pNode->next = pIndex->next; 
    pIndex->next = pNode; 
    return TRUE; 
} 
</div>

(6)双向链表中删除数据

    pNode = find_data_in_double_link(*ppDLinkNode, data); 
    if(NULL == pNode) 
        return FALSE; 

    if(pNode == *ppDLinkNode){ 
        if(NULL == (*ppDLinkNode)->next){ 
            *ppDLinkNode = NULL; 
        }else{ 
            *ppDLinkNode = pNode->next; 
            (*ppDLinkNode)->prev = NULL; 
        } 

    }else{ 
        if(pNode->next) 
            pNode->next->prev = pNode->prev; 
        pNode->prev->next = pNode->next; 
    } 

    free(pNode); 
    return TRUE; 
} 
</div>

(7)统计双向链表中数据的个数

    while(NULL != pNode){ 
        count ++; 
        pNode = pNode->next; 
    } 
    return count; 
} 
</div>

(8)打印双向链表中数据
void print_double_link_node(const DOUBLE_LINK_NODE* pDLinkNode) 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 数据结构链表的实现代码
  • 关于双向链表的增删改查和排序的C++实现
  • 深入解析C++的循环链表与双向链表设计的API实现
  • c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)
  • C++ 模版双向链表的实现详解
  • 如何用C++实现双向循环链表
  • C++ 构造双向链表的实现代码

相关文章

  • 2017-05-28C语言读写配置文件的方法
  • 2017-05-28C语言 扫雷程序的实现
  • 2017-05-28C++数据结构与算法之判断一个链表是否为回文结构的方法
  • 2017-05-28websocket++简单使用及实例分析
  • 2017-05-28c语言二进制数按位输出示例
  • 2017-05-28C++实现将简单密码译回原文的方法
  • 2017-05-28c++ 端口扫描程序实现案例
  • 2017-05-28C++基于递归和非递归算法求二叉树镜像的方法
  • 2017-05-28c语言实现把文件中数据读取并存到数组中
  • 2017-05-28用C语言实现从文本文件中读取数据后进行排序的功能

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++如何实现广义表详解
    • C语言main函数的参数及其返回值详细解析
    • 简单掌握桶排序算法及C++版的代码实现
    • 6个变态的C语言Hello World程序
    • C++实现下载的代码
    • C语言求向量和的两则问题解答分享
    • C++中与输入相关的istream类成员函数简介
    • C语言求两个字符串的最长公共子串
    • 教你5分钟轻松搞定内存字节对齐
    • 原创的C语言控制台小游戏

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有