单向链表、双向链表的插入和删除

参考资料:
[1]大话数据结构 3.8 单链表的插入和删除 自己画的红框
[2]大话数据结构 3.14 双向链表 自己画的红框
[3]大话数据结构 3.9单链表的整表创建,一下子就理解了!!!
单向链表和双向链表的插入,要注意顺序!!!


struct ListNode {
    int m_nKey;
    ListNode * m_pNext;
};

//创建单向链表,使用头插法
//参考资料:大话数据结构,3.9单链表的整表创建,一下子就理解了
void CreateListNode(ListNode* L, int nNum)
{
    ListNode* p;

    //先建立一个带头结点的单链表
    L = (ListNode*)malloc(sizeof(L));
    L->m_pNext = nullptr;

    for (int i = 0; i < nNum; i++)
    {
        p = (ListNode*)malloc(sizeof(p));
        p->m_nKey = 1;
        p->m_pNext = L->m_pNext;
        L->m_pNext = p;
    }

}

//由单向链表头插法类比可得
//双向链表
struct DualListNode 
{
    int m_nKey;
    DualListNode* m_pPrev;
    DualListNode* m_pNext;
};

//双向链表的整表创建。
void CreateDualListNode(DualListNode* L, int nNum)
{
    L = (DualListNode*)malloc(sizeof(L));
    L->m_pPrev = nullptr;
    L->m_pNext = nullptr;

    DualListNode* p;

    for (int i = 0; i < nNum; i++)
    {
        p = (DualListNode*)malloc(sizeof(p));
        p->m_nKey = 1;

        p->m_pNext = L->m_pNext;
        p->m_pPrev = L;
        L->m_pNext->m_pPrev = p;
        L->m_pNext = p;

    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大学的时候不好好学习,老师在讲台上讲课,自己在以为老师看不到的座位看小说,现在用到了老师讲的知识,只能自己看书查资...
    和珏猫阅读 1,537评论 1 3
  • 本文内容:1、 什么是链表?2、 链表共分几类?3、 链表的 C 实现! 总表:《数据结构?》 工程代码 Gith...
    半纸渊阅读 40,174评论 0 54
  • 转自:http://blog.csdn.net/oreo_go/article/details/52116214 ...
    YYT1992阅读 1,244评论 0 4
  • 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,那么怎么表示逻辑上的相邻关系呢? 可以...
    rainchxy阅读 2,201评论 0 6
  • Q:我为什么要读书? A:简而言之,即“腹有诗书气自华,润物细无声”。用翁贝托•埃科在《巴黎评论·作家访谈》中有言...
    晚红阅读 301评论 0 2

友情链接更多精彩内容