typedef struct nodeDate {
int flag;
// 删除标志。0:删除;1:使用中。
... ...
} *Date;
typedef struct node {
Date date;
struct node *next;
// 下一个元素。-1:最后一个元素。
} *Node;
void Pack(Node* head) {
Node p, q;
q = *head;
for (p=*head; p->next > 0; p=q->next)
if (! p->date->flag ) {
q->next = p->next;
free(p->date);
free(p);
} else
q = p;
}