МАКС написав:задана не порожня послідовність слів з латинських літер. Останнім символом цієї послідовності є крапка. словами називаються групи символів, які розділені одним чи кількома пробілами та не містять пробілів усередині себе. визначити кількість слів, які не містять заданої літери.
до понеділка, бажано з коментами, спасіб за раньше))
Староста написав:Визначити клас, який реалізує бінарне дерево. Передбачити метод включення та виключення елементу із дерева та пошуку елементу по заданому ключу.
#include <cstdlib>
#include <iostream>
#define SELFDELETE 1
using namespace std;
typedef struct elem
{
unsigned long int key;
void *value;
elem* left;
elem* right;
};
class bst
{
private:
elem* bst_root;
void bst_add(elem **point,unsigned long int key, void *value);
void bst_remove(elem *point,unsigned long int key,elem **parent);
void* bst_find(elem *point,unsigned long int key);
public:
bst();
~bst();
void add(unsigned long int key, void *value);
void remove(unsigned long int key);
void* find(unsigned long int key);
};
bst::bst()
{
bst_root = NULL;
}
bst::~bst()
{
//TODO: очистка памяти???
// TODO: Нужно обходить все дерево и удалять элементы
}
void* bst::find(unsigned long int key)
{
return bst_find(bst_root,key);
}
void* bst::bst_find(elem* point,unsigned long int key)
{
if (point == NULL)
return NULL;
else if (point->key == key)
{
return point->value;
}
else if (point->key > key)
{
return bst_find(point->left,key);
}
else
return bst_find(point->right,key);
}
void bst::add(unsigned long int key, void *value)
{
bst_add(&bst_root,key,value);
}
void bst::remove(unsigned long int key)
{
bst_remove(bst_root,key,NULL);
}
void bst::bst_remove(elem *point,unsigned long int key,elem **parent)
{
if(point == NULL)
{
return;
}
else
{
if (key > point->key)
{
bst_remove(point->right,key,&point);
}
else if (key < point->key)
{
bst_remove(point->left,key,&point);
}
else
{
if (point->left == NULL && point->right == NULL)
{
*parent = NULL;
#ifdef SELFDEELETE
free(point->value);
#endif
free(point);
}
else if(point->left == NULL)
{
elem* tmp;
tmp = point->left;
point->right = tmp->right;
point->left = tmp->left;
point->value = tmp->value;
free(tmp);
}
else if (point->right == NULL)
{
elem* tmp;
tmp = point->right;
point->right = tmp->right;
point->left = tmp->left;
point->value = tmp->value;
free(tmp);
}
else
{
elem * tmp;
tmp = point->right;
while (tmp->left != NULL)
{
tmp = tmp->left;
}
point->value = tmp->value;
point->key = tmp->key;
free(tmp);
}
}
}
}
void bst::bst_add(elem **ptr,unsigned long int key, void *value)
{
elem* point;
point = *ptr;
if (point == NULL)
{
point = (elem *)malloc (sizeof(elem));
point->left = NULL;
point->right = NULL;
point->key = key;
point->value = value;
*ptr = point;
}
else
{
if(key < point->key)
{
bst_add(&point->left,key,value);
}
else
{
bst_add(&point->right,key,value);
}
}
}
int main(int argc, char *argv[])
{
bst tree;
string test1;
string test2;
string test3;
string test4;
string test5;
string *res;
test1 = "xxx";
test2 = "yyy";
test3 = "ddd";
test4 = "ccc";
test5 = "bbb";
tree.add(5,&test1);
tree.add(7,&test2);
tree.add(4,&test3);
tree.add(8,&test4);
tree.add(2,&test5);
res = (string *)tree.find(7);
if (res == NULL)
{
cout << "Not found";
}
else
{
cout << res->data() ;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Василь написав:МАКС написав:задана не порожня послідовність слів з латинських літер. Останнім символом цієї послідовності є крапка. словами називаються групи символів, які розділені одним чи кількома пробілами та не містять пробілів усередині себе. визначити кількість слів, які не містять заданої літери.
до понеділка, бажано з коментами, спасіб за раньше))
Я уже написал... на ноуте лежит ))
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.
GorbachenkoVasyl написав:Запитання до aol
- Код: Виділити все
Визначити клас ОДНОЗВЯЗНИЙ СПИСОК. Реалізувати методи для включення та виключення елементу у список, а також методи пошуку елементу по заданому ключу та визначення, чи порожній список.
Запитання:
Яка ідея однозв'язного списку. І як його треба робити. Мені потрібна ідея.
GorbachenkoVasyl написав:
- Код: Виділити все
В значити клас ПОЛІГОН (багатокутник). Клас має містити методи для зображення полігону, визначення його периметру, тощо. Створити похідний клас – ТРИКУТНИК з методом визначення точки перетину медіан.
Запитання:
Як малювати в DevCPP, бажано з прикладами.
Завчасно дякую!
Повернутись до Питання по домашці
Зараз переглядають цей форум: Немає зареєстрованих користувачів і 1 гість