C++单链表中删除指定范围内的元素

来源:互联网 发布:鹰身女郎知乎 编辑:程序博客网 时间:2024/06/02 03:58
//删除指定范围内的所有元素template<typename T>void chain<T>::removeRange(int fromIndex, int toIndex){  chainNode<T>*deleteNode;  chainNode<T>*p = firstNode;  if (fromIndex == 0)                                //方法复杂度O(toIndex-fromIndex+1)  {                                                   //思想是如果首位是0号元素,则先删除0后面的元素,最后把0号元素删除  for (int i = 0; i < toIndex - fromIndex; i++)  {  deleteNode = p->next;  p->next = p->next->next;  delete deleteNode;  listSize--;  }  deleteNode = firstNode;  firstNode = firstNode->next;  delete deleteNode;  listSize--;  }  else                                             //如果是非0开始,则先找到起始元素的前驱,再逐个删除  {  for (int i = 0; i < fromIndex - 1;i++)  p = p->next;  for (int i = 0; i < toIndex - fromIndex + 1;i++)  {  deleteNode = p->next;  p->next = p->next->next;  delete deleteNode;  listSize--;  }  }}

原创粉丝点击