IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Класс Stack, C
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

Репутация: -  0  +


Помогите пожалуйста - нужно на С создать класс стек (stack), в нем реализовать процедуру push (поместить этемент в конец цепочки) и создать конструктор копирования и деструктор. Нужно использовать динамическую память. Элементы стека - double (хотя это наверно не важно).
Заранее спасибо.


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


В языке Си классов нет. Си - не объектно-ориентированный язык. Может Си++ ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

Репутация: -  0  +


Да, извиняюсь - ошибся С++.


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






#include <iostream.h>

typedef double T;

class Stack {

public:
// Конструктор копирования
Stack(const Stack &s);

// Конструктор по умолчанию
Stack(): first(0) {
}

// Деструктор
~Stack();

void push(T value);
void print();

class Item {
public:
Item(T val, Item *next_ptr):
item(val), next(next_ptr) {
};

T item;
Item *next;
};

private:
Item *first;
};

Stack :: Stack(const Stack &s) {

Stack Ts;
for(Item *pt = s.first; pt; pt = pt -> next) Ts.push(pt -> item);
pt = Ts.first;
while(pt) {
push(pt -> item); pt = pt -> next;
}

}


Stack :: ~Stack() {
for(Item *pt = first; pt; ) {
Item *p = pt;
pt = pt -> next;
delete p;
}

first = 0;
}

void Stack :: push(T value) {
Item *pt = new Item(value, first);

first = pt;
}

void Stack :: print() {

cout << "< ";
for(Item *pt = first; pt; pt = pt -> next)
cout << pt -> item << " ";
cout << " >" << endl;
}

int main() {
// Пустой стек
Stack s;

cout << "starting..." << endl;
for(int i = 3; i < 10; ++i)
s.push((double)i);

// Проверяем, что записалось
s.print();

// Копируем s -> s2
Stack s2 = s;
s2.print();

// Деструктор вызовется автоматически
return 0;
}

Так пойдет? (не проверял, но причин для отказа работать не вижу)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 53
Пол: Мужской
Реальное имя: Веселовский Пётр Николаевич

Репутация: -  0  +


Да, то что надо, Спасибо.


--------------------
Money, hoes, cars and clothes
That's how all my niggaz know
Blowin dro, 24's
That's how all my niggaz roll...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.03.2021 8:51
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name