第一种:给定单链表的节点索引值来删除,比如给3~7,删除4,5,6节点 int CSList::DeleteInterzone(size_t _min,size_t _max) { if (m_pfirst != NULL && _max>_min) { SListNode* cursor = NULL; SListNode* prve = NULL; size_t index = 0; cursor = m_pfirst; while(index<_max-1 && cursor != NULL) { prve = cursor; cursor = cursor->next; index++; if (index>_min && cursor!=NULL) { prve->next = cursor->next; DestroyNode(cursor); cursor = prve; } } return 0; } return -1; } 第二种:一个单链表,有序排列,删除大于min小于max的值,给3,7 删除比3大比7小的数 int CSList::DeleteNumber(int _min,int _max) { if (m_pfirst != NULL && m_pfirst->next != NULL && _max>_min) { SListNode* prve = m_pfirst; SListNode* cursor = m_pfirst; SListNode* pdel = NULL; //求出要删除的第一数的位置 while(*(int*)cursor->data <=_min) { prve = cursor; cursor = cursor->next; } //开始往后删除节点 while(cursor != NULL) { if(*(int*)cursor->data<_max) { if (cursor == m_pfirst) { m_pfirst = cursor->next; DestroyNode(cursor); cursor = m_pfirst; continue; } prve->next = cursor->next; DestroyNode(cursor); cursor = prve->next; } } return 0; } return -1; }