C++从链表中删除给定整数的倍数可以通过以下步骤实现:
struct ListNode {
int val;
ListNode* next;
};
// 创建链表示例
ListNode* createLinkedList() {
ListNode* head = new ListNode{1, nullptr};
ListNode* node1 = new ListNode{2, nullptr};
ListNode* node2 = new ListNode{3, nullptr};
ListNode* node3 = new ListNode{4, nullptr};
ListNode* node4 = new ListNode{5, nullptr};
head->next = node1;
node1->next = node2;
node2->next = node3;
node3->next = node4;
return head;
}
ListNode* removeMultiples(ListNode* head, int target) {
ListNode* dummy = new ListNode{0, head};
ListNode* prev = dummy;
ListNode* curr = head;
while (curr != nullptr) {
if (curr->val % target == 0) {
prev->next = curr->next;
delete curr;
curr = prev->next;
} else {
prev = curr;
curr = curr->next;
}
}
ListNode* newHead = dummy->next;
delete dummy;
return newHead;
}
int main() {
ListNode* head = createLinkedList();
int target = 2;
ListNode* newHead = removeMultiples(head, target);
// 打印链表
ListNode* curr = newHead;
while (curr != nullptr) {
cout << curr->val << " ";
curr = curr->next;
}
cout << endl;
// 释放链表内存
curr = newHead;
while (curr != nullptr) {
ListNode* temp = curr;
curr = curr->next;
delete temp;
}
return 0;
}
以上代码示例中,我们首先创建了一个包含整数值的链表,然后调用removeMultiples
函数删除给定整数的倍数节点,并打印删除后的链表结果。最后,我们释放链表的内存。
这个问题中没有要求提及腾讯云相关产品和产品介绍链接地址,因此不需要提供相关信息。
领取专属 10元无门槛券
手把手带您无忧上云