Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions sem1/test3/test3.1/list.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#include <iostream>
#include "list.h"
using namespace std;

struct ListElement
{
int number;
int amount;
ListElement *next;
};

struct List
{
ListElement *first;
};

List *createList()
{
return new List {nullptr};
}

void putOnPlace(ListElement *&element, int number)
{
if (element->next && element->number > element->next->number)
{
ListElement *current = element->next;
element->next = element->next->next;
current->next = element;
element = current;
putOnPlace(element->next, number);
}
}

void addElement(List *list, int number)
{
ListElement *current = list->first;
while (current)
{
if (current->number == number)
{
current->amount++;
return;
}
current = current->next;
}
ListElement *newElement = new ListElement {number, 1, list->first};
list->first = newElement;
putOnPlace(list->first, number);
}

void deleteList(List *list)
{
while (list->first)
{
ListElement *current = list->first;
list->first = current->next;
delete current;
}
delete list;
}

void displayList(List *list)
{
ListElement *current = list->first;
while (current)
{
cout << current->number << "=>" << current->amount << " ";
current = current->next;
}
}

10 changes: 10 additions & 0 deletions sem1/test3/test3.1/list.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#pragma once

struct ListElement;
struct List;

List *createList();
void deleteList(List *list);

void addElement(List *list, int number);
void displayList(List *list);
20 changes: 20 additions & 0 deletions sem1/test3/test3.1/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#include <iostream>
#include "list.h"
using namespace std;

int main()
{
List *list = createList();
cout << "Enter numbers:" << endl;
int number = 0;
cin >> number;
for (int i = 0; number != 0; i++)
{
addElement(list, number);
cin >> number;
}
cout << endl;
displayList(list);
deleteList(list);
}