滿足條件就刪除,不滿足就進入下一個節點
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
/*鏈表*/
LinkList List_TailInsert(LinkList L) {
int x;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode *s, *r = L;
cout << "尾插法創建單鏈表:";
while (true) {
cin >> x;
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
if (cin.get() == '\n')break;
}
r->next = NULL;
return L;
}
void List_Print(LinkList L) {
LNode *p;
p = L->next;
while (p) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
LinkList Del_aTob(LinkList L, int a, int b) {
if (L->next == NULL) return L;
LNode *pre =L;
LNode *p= L->next;
while (p)
{
if(p->data>a&&p->data<b){
pre->next = p->next;
free(p);
p = pre->next;
}
else {
pre = p;
p = p->next;
}
}
return L;
}
int main() {
LinkList L = NULL;
LNode *p;
L = List_TailInsert(L);
List_Print(L);
int a = 0, b = 0;
cout << "請輸入刪除範圍" << endl;
cin >> a >> b;
L = Del_aTob(L, a, b);
List_Print(L);
}