编辑代码

#include <iostream>
using namespace std;
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L){
    L=new LNode;
    L->next = NULL;
    return true;
}
bool InsetList(LinkList &L,int i,int a){
    int j=0;
    LNode *p=L;
    while(p&&j<i-1){
        p=p->next;
        j++;
    }
    if(j>i) return false;
    LNode *s = new LNode;
    s->data = a;
    s->next = p->next;
    p->next = s;
    return true;
}
void Travers(LinkList L){
    LNode *p = L->next;
    while(p){
        cout<<p->data;
        p=p->next;
    }
}
//课本第二章8   比课本答案强多了
void DeleteValue(LinkList &L,int mink,int maxk){
    LNode *p = L;
    LNode *s;
    while(p->next&&p->next->data<=mink)//查找第一个大于mink的节点
        p = p->next;
    if(p->next==NULL)   return; //如果没有直接返回
    while(p->next&&p->next->data<maxk){//一直删除小于maxk的节点,直到为空或者大于等于maxk
        s = p->next;
        p->next = s->next;
        delete s;
    }
}
int main() { 
    LinkList L;
    InitList(L);
    for(int i=1;i<=5;i++){
        InsetList(L,i,i);
    }
    DeleteValue(L,2,5);
    Travers(L);
	return 0;
}