可能目前对我来说循环链表和双链表对我来说用的也不多,也有点小复杂,这里就简单总结一下
双链表
>>ADT:
typedef struct DulNode { DataType data; struct DulNode *prior, *next; }DulNode;
>>插入核心操作
s = (DulNode*)malloc(sizeof(DulNode)); s->prior = p->prior; s->next = p; p->prior->next = s; p->prior = s;
>>删除核心操作
(p->prior)->next = p->next; (p->next)->prior = p->prior;
free(p);
循环单链表
相比单链表,将终端节点的指针由空指针改为指向头节点即可
具体的像插入,删除等操作中把p!=NULL,p->next!=NULL,换成有关L的操作就好了,视具体情况而定