双链表
双链表的存储结构
//双链表的存储结构 typedef struct DNode{ int data; //结点的数据域 DNode *prior, *next; //前驱和后继指针 }DNode, *DLinkList;
在L中确定第i个元素的位置
//在L中确定第i个元素的位置 DNode *GetElem(DLinkList L,int i);
双向链表的插入
//双向链表的插入---在带头结点的双向链表L中第i个位置之前插入元素e bool ListInsert(DLinkList &L,int i,int e){ DNode *p,*s; if(!(p=GetElem(L,i))) return false; //在L中确定第i个元素的位置指针p s=new DNode; s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s; return true; }
双向链表的删除
//双向链表的删除---删除第i个元素,并用e返回 bool ListDelete(DLinkList &L,int i,int &e){ DNode *p; if(!(p=GetElem(L,i))) return false; //在L中确定第i个元素的位置指针p e=p->data; p->prior->next=p->next; p->next->prior=p->prior; return true; }