list_entry Head_list 模拟一下,方便以后查看

#include <iostream>
using namespace std;
typedef struct head_list
{
 struct head_list *prv;
 struct head_list *next;
} _head_list;
//-----------------------------------------
typedef struct Data_List
{
 int Data_From;
 
 struct head_list list;int Data_To; 
} _Data_List;
//--------------------------------------------

void Init_Head_List(_head_list *list)
{
   list->prv=list;
   list->next=list;
}
//----------------------------------------------------------
void Add_Head_List(_head_list *Insert_list, _head_list *New)
{
   _head_list * Prv=Insert_list->prv;
   New->next=Insert_list;
   New->prv=Prv;
   Prv->next=New;
   Insert_list->prv=New;
}

_Data_List* Get_Data_ListAddress(_head_list *pos)
{
 size_t offsets=(size_t)(&((_Data_List*)0)->list);
 cout<<(_Data_List*)((char*)pos-offsets)<<endl;
 return (_Data_List*)((char*)pos-offsets);
}

void main()
{
    _Data_List Main_List;
    Init_Head_List(&Main_List.list);


    _Data_List *Node=new _Data_List;
 Node->Data_From=10;
 Node->Data_To=20;
    Add_Head_List(&Main_List.list,&Node->list);


    cout<<Node<<endl;
    ///
    head_list *Next=Main_List.list.next;
 //
 _Data_List *tmp=Get_Data_ListAddress(Next);
 
     cout<<tmp->Data_From<<endl;
  cout<<tmp->Data_To<<endl;

    ///
 delete Node;
}

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值