弧结点的两种形态
|flag=1| next |
| id |
| ip |
| metric |
|flag=0| next |
| prefix |
| metric |
表头节点:
|router id |
| link |
| next |
typedef struct //弧结点
{
unsigned int id, ip;
}Link_Node;
typedef struct //弧结点
{
unsigned int prefix;
}Net_Node;
typedef struct node
{
int flag; //用来区分是哪一种弧结点
union //根据flag来决定调用data里的哪一部分
{
Link_Node l;
Net_Node n;
}data;
int metric;
struct node *next; //这里也要有指向下一个节点的指针。别忘了!!
}E_Node;
typedef struct hnode
{
unsigned int id;
E_Node *e;
struct hnode *next;
}H_Node;