清华严蔚敏-数据结构(第1-2章).pptVIP

  • 3
  • 0
  • 约1.83万字
  • 约 67页
  • 2017-10-02 发布于广东
  • 举报
清华严蔚敏-数据结构(第1-2章)

四、删除运算 删除运算是将表的第i个结点删去。因为在单链表中结点ai的存储地址是在其直接前趋结点ai-1的指针域next中,所以我们必须首先找到ai-1的存储位置p。然后令p–next指向ai的直接后继结点,即把ai从链上摘下。最后释放结点ai的空间,将其归还给“存储池”。 算法2.10 void ListDelete_L(LinkList L, int i, ElemType e) { p=L;j=0; while (p-next ji-1) { p= p-next; ++j}; if(!(p-next)||ji-1) return ERROR; q = p-next; p-next = q-next; e = q–data;free( r ); return OK; } 设单链表的长度为n,则删去第i个结点仅当1≤i ≤ n时是合法的。注意,当i=n+1时,虽然被删结点不存在,但其前趋结点却存在,它是终端结点。因此被删结点的直接前趋*p存在并不意味着被删结点就一定存在,仅当*p存在(即p!=NULL)且*p不是终端结点(即p–next!=NULL)时,才能确定被删结点存在。显然此算法的时间复杂度也是O(n)。从上面的讨论可以看出,链表上实现插入和删除运算,无须移动结点,仅需修改指针。 五、合并运

文档评论(0)

1亿VIP精品文档

相关文档