网上这方面挺多的。你搜一下。我就大概说一下吧。
循环链表的操作和线性链表 基本一致。
1。差别在于算法中的尾指针指向头结点。//这也是你判断其是否为空和结束的标志。
2。同时循环条件的差别不是H或H->next是否为空。而是判断它们是否是头结点。
我没有直接回答。你思考一下吧。
如果你会一般的线性链表的话。如果你理解力还行的话。我想我应该回答了你的问题。
请看图:
【示例】
typedef struct aa
{
int data;
struct aa *pre;
struct aa *next;
}a;
a *Head;
【说明】
if(head-->prev==NULL&&head-->next==NULL)
printf("链表为空。");
else if(head-->prev!=NULL&&head-->next==NULL)
printf("头指针在链表末尾(最后一次加上的结点处)。");
else if(head-->prev=NULL&&head-->next!=NULL)
printf("头指针在链表头部(第一次加 上的结点处)。");
else
printf("如果结点总数大于2个,则头指针在链表中间。");