zoukankan      html  css  js  c++  java
  • 有头结点的双向链表

    typedef struct node
    {
        struct node*pre;
        struct node* next;
    }NODE;
    
    typedef struct
    {
        NODE head;//头结点,一定要有头结点。
        NODE* tail;
        int nodeNum;
    }LIST;
    

    //insert p_node after the p_previous node

    //没有头结点的情况复杂多了,因为要考虑在头结点前或者后插入,现在只用考虑是不是在最后插入。

    //没有头结点的话,连删除第一个节点都很困难,因为要判断头结点是不是为空。总之,没有头结点要考虑两头的事情,很麻烦,有了头结点只需考虑末尾的事情。
    void drv_list_node_insert(LIST *pList, LIST_NODE *pPrevious,LIST_NODE* pNode)
    {
        LIST_NODE * pNext = pPrevious->next;
        pPrevious->next = pNode;
        if( pNext == NULL)
        {
            pNode->pre = pPrevious;
            pNode->next = NULL;
            pList->tail = pNode;
        }
        else
        {
            pNext->pre = pNode;
            pNode->pre = pPrevious;
            pNode->next = pNext;
        }
        pList->nodeNum--;
    }

  • 相关阅读:
    MFC绘图机制(二)-双缓存
    C89:论数组/指针/引用
    C89:论预处理命令
    图像优化大坑
    MFC 对话框和属性表
    jQuery-plugin-pagePiling
    jquery-ui-chosen
    JavaScript DOM编程艺术小笔记
    微信公众号素材
    iOS沙箱传值
  • 原文地址:https://www.cnblogs.com/elseliving/p/7455340.html
Copyright © 2011-2022 走看看