双链表

双链表的存储结构

//双链表的存储结构
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;
}

 

posted @ 2022-04-21 16:17  不会飞的鲨鱼  阅读(35)  评论(0编辑  收藏  举报