我必须实现一个链表库,其中每个节点都有列表的类型。例如,create函数看起来" normal" :
int LstCreate(LIST_ENTRY **List);
但GetNodeValue将节点显示为列表:
int LstGetNodeValue(LIST_ENTRY *Node, int *Value);
int LstGetNthNode(LIST_ENTRY *List, int Index, LIST_ENTRY **Node);
如何实施这样的清单? 我的第一个想法是列表是一个只包含头节点的结构:
struct LIST_ENTRY
{
int Value;
LIST_ENTRY *Next;
};
然后列表必须每次都是列表的头部。
结构看起来不像这样:
struct Node
{
int Value;
Node *Next;
}
struct LIST_ENTRY
{
struct Node *Head;
struct Node *CurrentNode;
struct Node *Tail;
...
}
因为Node必须具有SAME TYPE作为List。