【數據結構】-單鏈表-刪除鏈表中所有介於給定的兩個值之間的節點

滿足條件就刪除,不滿足就進入下一個節點


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);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章