首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++从链表中删除给定整数的倍数

C++从链表中删除给定整数的倍数可以通过以下步骤实现:

  1. 定义链表节点结构体:首先,我们需要定义一个链表节点的结构体,包含一个整数值和一个指向下一个节点的指针。
代码语言:txt
复制
struct ListNode {
    int val;
    ListNode* next;
};
  1. 创建链表:根据题目要求,我们可以手动创建一个链表,或者通过输入等方式动态生成链表。
代码语言:txt
复制
// 创建链表示例
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;
}
  1. 删除给定整数的倍数:遍历链表,找到给定整数的倍数节点,并删除。
代码语言:txt
复制
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;
}
  1. 测试示例:
代码语言:txt
复制
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函数删除给定整数的倍数节点,并打印删除后的链表结果。最后,我们释放链表的内存。

这个问题中没有要求提及腾讯云相关产品和产品介绍链接地址,因此不需要提供相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券