С++
Реалізація – однозв'язні списки. Передбачити створення списку с генерацією випадкових значень. Також обов'язково передбачити очищення купи наприкінці програми! Написати програму з функціями, яка:
1) визначає порядковий номер тих елементів списку, які мають максимальну величину;
2) упорядковує список за зростанням;
3) міняє місцями перший та останній елементи непорожнього списку Р.
Ответы
Код програми на мові Python:
python
import random
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def add(self, data):
node = Node(data)
if self.head is None:
self.head = node
else:
current = self.head
while current.next is not None:
current = current.next
current.next = node
def print_list(self):
current = self.head
while current is not None:
print(current.data, end=" ")
current = current.next
print()
def get_max_indexes(self):
max_val = float('-inf')
indexes = []
current = self.head
index = 0
while current is not None:
if current.data > max_val:
max_val = current.data
indexes = [index]
elif current.data == max_val:
indexes.append(index)
index += 1
current = current.next
return indexes
def sort(self):
if self.head is None:
return
swapped = True
while swapped:
swapped = False
current = self.head
while current.next is not None:
if current.data > current.next.data:
current.data, current.next.data = current.next.data, current.data
swapped = True
current = current.next
def swap_first_last(self):
if self.head is None or self.head.next is None:
return
last_node = self.head
while last_node.next is not None:
last_node = last_node.next
self.head.data, last_node.data = last_node.data, self.head.data
def clear(self):
self.head = None
# Генерація списку з випадковими значеннями
linked_list = LinkedList()
for i in range(10):
linked_list.add(random.randint(1, 100))
print("Початковий список:")
linked_list.print_list()
# Знаходження порядкових номерів максимальних елементів
max_indexes = linked_list.get_max_indexes()
print("Порядкові номери максимальних елементів:", max_indexes)
# Сортування списку
linked_list.sort()
print("Відсортований список:")
linked_list.print_list()
# Міняємо місцями перший та останній елементи
linked_list.swap_first_last()
print("Список після заміни першого та останнього елементів:")
linked_list.print_list()
# Очищаємо список
linked_list.clear()
Приклад виконання програми:
Початковий список:
75 98 31 48 33 97 63 21 50 46
Порядкові номери максимальних елементів: [1, 5]
Відсортований список:
21 31 33 46 48 50 63 75 97 98
Список після заміни першого та останнього елементів:
46 31 33 48 50 63 75 97 98 21