解释一下最后函数DeletemMinMax什么意思吧

#include
#include
#include
#include
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status; //Status 是函数返回值类型,其值是函数结果状态代码。
typedef int ElemType; //ElemType 为可定义的数据类型,此设为string类型

typedef struct LNode
{
 ElemType data;
 struct LNode *next;
}LNode,*LinkList;

Status InitList(LinkList &L)
{
 L=new LNode;
 L->next=NULL;
 return OK;
}

void CreateList_Up(LinkList &L, int n)
{
 void insertUp(LinkList &L, LinkList &p);
 for(int i=0; inew LNode;
  cin>>p->data;
  insertUp(L,p);
 }
} 

void insertUp(LinkList &L, LinkList &p)
{
 LinkList q,q2;
 q=L;
 q2=L->next;
 while(q2 && q2->data < p->data )
 {
  q=q2;
  q2=q2->next;
 }
 
 if(q2==NULL)
 {
  q->next=p;
  p->next=q2;
 }
 else if(q2->data==p->data)
 {
  delete p;
 }
 else
 {
  q->next=p;
  p->next=q2;
 }
 
}

void showList(LinkList &L)
{
 if(L->next==NULL) 
 {
  cout<<"empty!"<return;
 }
 LinkList p=L->next;
 int n=1;
 while(p!=NULL)
 {
  cout<":"<data<next;
 }
 
}


DeleteMinMax(LinkList &L,int mink,int maxk)
{
 LinkList p=L->next,pre=L,s;
 while(p && p->data<=mink)
 {
  pre=p;
  p=p->next;
 }
 
 while(p && p->datanext;
 }
 LinkList q=pre->next;
 pre->next=p;
 while(q!=p)
 {
  s=q->next;
  delete q;
  q=s;
 }
}
int main()
{
    LinkList La;
    InitList(La); //初始化带头结点的单链表(存储int类型数据) 
    CreateList_Up(La,6); //创建递增单链表(去掉重复数据) 
    cout<<"Show La:"<showList(La); //单链表遍历 
    int mink,maxk;
    cin>>mink>>maxk;
    DeleteMinMax(La,mink,maxk); //链表中去掉(mink,maxk)区间的元素 
    cout<<"After deleting ("<","<"):"<showList(La); //单链表遍历
    return 0;
} 

找到小于等于mink的值的最大索引节点,用pre指向;
找到小于等于maxk的值的最大索引节点,用p指向;
此时链表分为三段
97行将前后两段连起来;
98行的循环,依次删除中间段的所有节点。