标签:链表
标兵结点(头结点)是在链表中的第一个结点,不存放数据,仅仅是个标记带标兵结点和不带标兵结点两版本,对比可见标兵结点的好处。
结点声明如下:
struct Node { int value; Node *prev; Node *next; }
int del_doublelist(Node*&h,int v)//不带标兵结点 { Node*p=h; while(p!=NULL&&p->value!=v) { p=p->next; } if(p==NULL)return 0;//空链表 if(p->value==v) { if(p->next==NULL&&p->prev==NULL)//只有一个结点 { h=NULL; free(p); } else if(p->next==NULL)//尾结点 { p->prev->next=NULL; free(p); } else if(p->prev==NULL)//头结点 { h=p->next; h->prev=NULL; free(p); } else//中间结点 { p->prev->next=p->next; p->next->prev=p->prev; free(p); } return 1; } }
int del_doublelist(Node*&h,int v)//带标兵结点 { Node*p=h->next; while(p!=NULL&&p->value!=v) { p=p->next; } if(p==NULL)return 0; if(p->value==v) { if(p->next==NULL)//尾结点 { p->next->prev=p->prev; free(p); } else//中间结点 { p->next->prev=p->prev; p->prev->next=p->next; free(p); } return 1; } }
标签:链表
原文地址:http://blog.csdn.net/u010839382/article/details/39677849