Робота з контейнерами в середовищі Qt Creator: QList, QLinkedList
Автор: V_ Zholobchuk • Декабрь 8, 2024 • Лабораторная работа • 1,248 Слов (5 Страниц) • 12 Просмотры
Міністерство освіти і науки України
Прикарпатський національний університет імені В.Стефаника
Факультет математики та інформатики
Кафедра інформаційних технологій
Інформатика і програмування
Лабораторна робота №6
Тема роботи:
Робота з контейнерами в середовищі Qt Creator: QList, QLinkedList
Варіант №2
Виконав:Жолобчук В.В.
Група ІПЗ-22
Дата: 4 грудня 2024р .
Викладач: Пікуляк М.В
Івано-Франківськ
2024
Завдання для виконання.
Завдання 1. Заповнити список випадковими елементами і реалізувати видалення елементів з позицій з N по K.
Код програми
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRandomGenerator>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->listWidget->setFlow(QListView::LeftToRight);
ui->listWidget->setWrapping(true);
connect(ui->deleteButton, &QPushButton::clicked, this, &MainWindow::on_deleteButton_clicked);
connect(ui->fillButton, &QPushButton::clicked, this, &MainWindow::on_fillButton_clicked);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::updateListView()
{
ui->listWidget->clear();
for (const auto &item : list) {
ui->listWidget->addItem(item);
}
}
void MainWindow::on_fillButton_clicked()
{
list.clear();
for (int i = 0; i < 10; ++i) {
int randomValue = QRandomGenerator::global()->bounded(100);
list.append(QString::number(randomValue));
}
updateListView();
}
void MainWindow::on_deleteButton_clicked()
{
bool okStart, okEnd;
int start = ui->lineEditN->text().toInt(&okStart) - 1;
int end = ui->lineEditK->text().toInt(&okEnd);
if (!okStart || !okEnd || start < 0 || start >= list.size() || end <= start || end > list.size()) {
return;
}
list.erase(list.begin() + start, list.begin() + end);
updateListView();
ui->lineEditN->clear();
ui->lineEditK->clear();
}
Результат виконання програми
[pic 1]
Завдання 2. Заповнити зв’язний список випадковими елементами і впорядкувати їх за спаданням
Код програми
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QRandomGenerator>
#include <QListWidgetItem>
LinkedList::LinkedList() : head(nullptr) {}
LinkedList::~LinkedList() {
deleteList();
}
void LinkedList::insert(int val) {
Node *newNode = new Node(val);
if (!head) {
head = newNode;
} else {
Node *temp = head;
while (temp->next) {
temp = temp->next;
}
temp->next = newNode;
}
}
void LinkedList::sortDescending() {
if (!head) return;
bool swapped;
do {
swapped = false;
Node *temp = head;
while (temp && temp->next) {
if (temp->data < temp->next->data) {
std::swap(temp->data, temp->next->data);
swapped = true;
}
temp = temp->next;
}
} while (swapped);
}
void LinkedList::display(QListWidget *listWidget) {
Node *temp = head;
listWidget->clear();
while (temp) {
listWidget->addItem(QString::number(temp->data));
temp = temp->next;
}
}
void LinkedList::clearListAndInsert() {
deleteList();
for (int i = 0; i < 10; ++i) {
insert(QRandomGenerator::global()->bounded(1, 100));
...