• Предмет: Информатика
  • Автор: sharqwe
  • Вопрос задан 4 месяца назад

С++
Реалізація – однозв'язні списки. Передбачити створення списку с  генерацією випадкових значень. Також обов'язково передбачити очищення  купи наприкінці програми! Написати програму з функціями, яка:
1) визначає порядковий номер тих елементів списку, які мають  максимальну величину;
2) упорядковує список за зростанням;
3) міняє місцями перший та останній елементи непорожнього списку Р.​

Ответы

Ответ дал: t1bers
1

Код програми на мові 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


sharqwe: а на С++?
Вас заинтересует