zoukankan      html  css  js  c++  java
  • 基于数据存储管理的带有头尾指针的双向链表创建实例

    1.基于LRU算法的带有头尾指针的双向链表的数据结构

    typedef struct LRUEle        //LRU链表结点
    {
        LRUEle();
        int fid;                //帧号
        double b2dtime;            //最后两次使用的时间间隔
        struct LRUEle * next;    //后指针
        struct LRUEle * prior;    //前指针
    }Link;
    
    struct LRULinkList        //LRU链表
    {
        Link *head;            //头指针
        Link *tail;            //尾指针
    };

    2.建立一个带有头结点的空双向链表

    LRULinkList *lruList;
        //初始化一个带有头结点的空LRU双向链表
        Link * head=new LRUEle();  
        head->next = head;
        head->prior = head;
        Link * tail = head; 
      
        lruList=(LRULinkList *)malloc(sizeof(LRULinkList));  
     
        lruList->head=head;  
        lruList->tail=tail; 

    3.错误的实现方法

        //    Link * head=new LRUEle();   
        //  Link * tail=new LRUEle();   初始化时头尾指针已同一个结点,不应分配两个不同的内存空间
     
        //  head->next=tail;    这样的实现,相当于建立了两个空的头结点;对于插入、删除没有一点好处,而且浪费内存空间
        //  tail->next=head;  
        //  head->prior=tail;  
        //  tail->prior=head;  

    4.带有头尾指针的单链表的数据结构

    typedef struct LNode {//结点类型  
        ElemType data;  
        struct LNode * next;  
    } Link, * Position;  
      
    typedef struct {//链表类型  
        Link * head;  
        Link * tail;    
    } LinkList; 

    5.带有头尾指针的单链表的初始化

        LinkList * l = (LinkList *)malloc(sizeof(LinkList));
        l->head = (Link *)malloc(sizeof(Link));  
        l->tail = (Link *)malloc(sizeof(Link));  
        if(!l->head || !l->tail)  
            exit(OVERFLOW);  
        l->head = l->tail;  
        l->tail->next = NULL;  
        return OK;  

    6.带有头尾指针的单链表与双向链表初始化的不同:见红色部分!!

    一定要注意对只含头尾指针的结构体分配内存空间(红色部分)。

  • 相关阅读:
    UBI系统原理分析【转】
    udhcpc命令【转】
    Device Tree(三):代码分析【转】
    Linux 中断详解 【转】
    ROS探索总结(三)——ROS新手教程【转】
    机器人操作系统(ROS)教程4:ROS的框架【转】
    你知道市面上机器人都用哪些操作系统吗【转】
    dump_stack调用过程【原创】
    #if、#ifdef、#if defined之间的区别【转】
    浅析firmware完整生存和使用流程 【转】
  • 原文地址:https://www.cnblogs.com/fuleying/p/3405099.html
Copyright © 2011-2022 走看看