struct node {
int val;
node *next;
};
void deleteBetweenMaxAndMin(node *head, int minv, int maxv) {
node *p = head;
node *q = head->next;
node *premin = head, *premax = head;
node *pmin = head->next, *pmax = head->next;
bool flag = false;
bool tag = false;
while (q) {
if (q->val > minv && !flag) {
pmin = q;
premin = p;
flag = true;
} else if (q->val < maxv && !tag) {
pmax = q;
premax = p;
}
p = p->next;
q = q->next;
}
premin->next = pmax->next;
}