练习题 1编写算法,实现在单链表中删除多余值相同的结点 yoid Delval L(LinkList &Ly while (p<nULL & p->nextsNULL fap: rp->next: while (nULL if(p-data=r->data)q->next=r+>next; free(r) -q-ne else q=r: r-r->next; i p next
练习题: 1、编写一算法,实现在单链表中删除多余值相同的结点。 Void Delval_L (LinkList &L) { p=L; while (p<>NULL && p->next<>NULL) { q=p; r=p->next; while (r<>NULL) { if (p->data=r->data) { q->next=r->next; free(r); r=q->next; } else { q=r; r=r->next;} } p=p->next; } }
练习题 2编写算法将带头结点的单链表倒置 Void InvertLinkList L(LinkList &l while (p)(s=p p→p->next ->next-=L->next L->next
练习题: 2、编写一算法,将带头结点的单链表倒置. Void InvertLinkList_L (LinkList &L) { p=L->next; L->next=NULL; while (p) { s=p; p=p->next; s->next=L->next; L->next=s; } }
2.3线性表的链式表示和实现 双链表的插入 ①②④③ S-DLinkList)malloc(sizeof (DLnode) >data= ① S->prior= p->prior② p->prior->ne ③ S-next=p p rior
2.3 线性表的链式表示和实现 • 双链表的插入 p … a b … ① ② ④ ③ s e s=(DLinkList) malloc (sizeof (DLnode)); s->data=e; ① s->prior=p->prior; ② p->prior->next=s; ③ s->next=p; ④ p->prior=s;
2.3线性表的链式表示和实现 双链表的插入(在p的后面插入) s=(DEink List) malloc(sizeof (DLnode)) s->data=e ① s>prior=p ② s->next=p->next next- prIor ④ p->next=
2.3 线性表的链式表示和实现 • 双链表的插入(在p的后面插入) s=(DLinkList) malloc (sizeof (DLnode)); s->data=e; ① s->prior=p; ② s->next=p->next; ③ p->next->prior=s; ④ p->next=s;
2.3线性表的链式表示和实现 双链表的删除 b ② p->data ①p> prior->next=p->next ② p-next-sprior=p- prior ee (p)
2.3 线性表的链式表示和实现 • 双链表的删除 ① p … a b c … ② e=p->data; ① p->prior->next=p->next; ② p->next->prior=p->prior; free (p);