#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;
}