class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
return
last_node = self.head
while last_node.next:
last_node = last_node.next
last_node.next = new_node
def display(self):
current = self.head
while current:
print(current.data, end=" -> ")
current = current.next
print("None")
def insert_list_after_target(list_main, target_element, list_insert):
"""
Вставляет элементы из списка list_insert после каждого вхождения target_element в list_main.
Args:
list_main: Основной связанный список.
target_element: Элемент, после которого нужно вставить.
list_insert: Связанный список, элементы которого вставляем.
"""
current = list_main.head
while current:
if current.data == target_element:
insert_node = list_insert.head
while insert_node:
new_node = Node(insert_node.data)
new_node.next = current.next
current.next = new_node
current = new_node
insert_node = insert_node.next
current = current.next
# Создаем основной список
main_list = LinkedList()
main_list.append(1)
main_list.append(2)
main_list.append(3)
main_list.append(2)
main_list.append(4)
print("Исходный основной список:")
main_list.display()
# Создаем список для вставки
insert_list = LinkedList()
insert_list.append(5)
insert_list.append(6)
insert_list.append(7)
print("Список для вставки:")
insert_list.display()
# Вызываем функцию вставки после каждого вхождения "2"
insert_list_after_target(main_list, 2, insert_list)
print("Результат после вставки:")
main_list.display()
#include <algorithm>
#include <iostream>
#include <forward_list>
using namespace std;
void show(const forward_list<int>& flst) {
for (auto x : flst) cout << x << ' ';
cout.put('\n');
}
void show(const initializer_list<int>& ilst) {
for (auto x : ilst) cout << x << ' ';
cout.put('\n');
}
void copy(forward_list<int>& m, const initializer_list<int>& m1, const int x) {
const auto finish = end(m);
auto it = find(begin(m), finish, x);
while (it != finish) {
auto tmp = next(it);
m.insert_after(it, m1);
it = find(tmp, finish, x);
}
}
int main() {
forward_list<int> m{ 3, 1, 2, 3, 1, 2, 3 };
show(m);
initializer_list<int> m1{ 4, 3, 2 };
show(m1);
constexpr auto x = 3;
copy(m, m1, x);
show(m);
}
Написать программу, содержащую процедуру, которая копирует в список М за каждым вхождением заданного элемента все элемента списка М1.