Разработать класс реализующий список (однонаправленное кольцо). Элемент списка содержит информацию о товаре на складе фирмы. Элемент очереди содержит наименование товара, цену, количество и дату поставки.
Вот реализация класса. Как видно я использую в структуре одно поле. Я не могу понять задание, элемент списка это данные в структуре? А элемент очереди это где данные должны быть?
my_list.h
struct nodes {
char data[256]; //Информация о товаре
nodes* next;
};
class my_list {
public:
void insert(char* str); //Вставляет запись за текущей.
void insert(nodes* nod); //Вставляет запись за текущей(перегрузка)
void del_next(); //Удаляет запись за текущей.
void go_next(); //Переходит к следующей записи.
void go_first(); //Переходит к первой записи.
const char* show(); //возвращает указатель на хранимые данные.
int size(); //Возвращает количество элементов в списке.
my_list();
~my_list();
private:
nodes *head; //начало списка.
nodes *position; //активная (текущая) запись.
int count; //количество элементов списка.
void free(); //удаляет все элементы, освобождает память
};
и описание методов my_list.cpp
my_list::my_list() {
head = NULL;
count = 0;
go_first();
}
my_list::~my_list() {
free();
}
//public:
void my_list::insert(char* str) {
//Вставляет запись за текущей.
nodes* new_node = new nodes;
strcpy_s(new_node->data, str);
if (position != NULL) {
new_node->next = position->next;
position->next = new_node;
}
else {
new_node->next = new_node;
position = head = new_node;
}
count++;
}
void my_list::insert(nodes* new_node) {
//Вставляет запись за текущей.
if (position != NULL) {
new_node->next = position->next;
position->next = new_node;
}
else {
new_node->next = new_node;
position = head = new_node;
}
count++;
}
void my_list::del_next() {
//Удаляет запись за текущей.
if (position != NULL) {
nodes* tmp = position->next;
position->next = position->next->next;
if (tmp == head) head = tmp->next;
delete tmp;
}
count--;
}
void my_list::go_next() {
//Переходит к следующей записи.
if (position != NULL)
position = position->next;
}
void my_list::go_first() {
//Переходит к первой записи.
position = head;
}
const char* my_list::show() {
//возвращает указатель на хранимые данные.
if (position != NULL)
return position->data;
else
return NULL;
}
int my_list::size() {
//Возвращает количество элементов в списке.
return count;
}
// private:
void my_list::free() {
//удаляет все элементы, освобождает память
go_first();
while (head->next != head) del_next();
del_next();
}
Надо внимательнее читать задание!
В структуре должны быть "предметные" поля:
И одно "служебное" - указатель на очередной элемент типа структуры, собственно, с помощью которого и реализуется список.
Примерно вот так:
struct Node {
std::string Name;
double Cost;
size_t Amount;
std::time_t DateTime;
Node *Next;
};
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Реально ли для объектов этого класса использовать перегрузку оператора + (суммы?) и как это сделать? и имеет ли смысл?
Какие есть типы данных в С++? Кто мог бы логически расставить по местам? Есть стандартные типы (int, double
Ребята, может кто знает, какие в android нужны permissions для чтения файлов других приложений в /data/data/%appname% ?