当前位置:
文档之家› 双向链表插入删除基本操作演示
双向链表插入删除基本操作演示
a
b
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; ① } p
a
b
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; } p
①
s
e
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; } ②
a
b ②
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; ① }
① ③
s
e
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; } ② ④
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; }
s
e
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; }
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; ④ p->prior=s; a b return OK; }
s
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; }
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; }
① ③
s
e
在双向链表中插入结点
Status ListInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; } ② ④
tInsert_Dul(DuLinklist &L,int i,ElemType e) { if(!(p=GetElem_DuL(L,i))) return ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode)))) return ERROR; s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; p ④ p->prior=s; a b return OK; } ②
a ②
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; } ① c a ②
a
b
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; ① } p
① ③
s
e
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; }
a
b
c
在双向链表中删除结点
Status ListDelete_Dul(DuLinklist &L,int i,ElemType &e) { if(!(p=GetElem_DuL(L,i))) return ERROR; e=p->data; ① p->prior->next=p->next ; ② p->next->prior=p->prior; ③ free(p); return OK; } p