Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно сделать и delete в стеке 
V
    Опции темы
Klio
  Дата 18.11.2010, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 18.4.2008
Где: Харьков - СС_3

Репутация: нет
Всего: 1



Приветствую господа программисты, помогите решить вопрос...
Структура, по своему подобию напоминает динамичесский стек, он находится внутри класса.
Стек увеличивается посредством добавления структур через new и привязке по next... Если есть выделение памяти под каждый стек то необходима и очистка... вопрос только как правильно это сделать...
Код
class ment{
  int number;       // длинна стека
  struct intern{    // много записей
      intern* next; // ссылка связующая со следующим элементом стека
  }
  intern* head; // голова стека
  public:
    ~ment();
}
void del_intern(intern i) {                     // как правильно записать передачу элемента?
  if (i.next!=null) del_intern(i.next);      // переход к следующему элементу всписке, если он есть (рекурсия)
  i.next=null;
  delete i;                       // удаляем элемент стека
}
ment::~ment(){
  if (number!=0) del_intern (this.head)  //  если есть элементы то удаляем их
  number=0;
  this.head=null; 
}


PM MAIL ICQ   Вверх
azesmcar
Дата 18.11.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Klio @  18.11.2010,  19:01 Найти цитируемый пост)
Структура, по своему подобию напоминает динамичесский стек, он находится внутри класса.

по своему образу и подобию она напоминает односвязный список.

Цитата(Klio @  18.11.2010,  19:01 Найти цитируемый пост)
Если есть выделение памяти под каждый стек то необходима и очистка... вопрос только как правильно это сделать...

в чем собственно проблема? начать с head-а и удалять пока не дойдешь до конца.
PM   Вверх
ИванМ
Дата 18.11.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 3
Всего: 23



Типа такого:
Код

ment::~ment(){
  intern* cur=head;
  while(cur)
  {
    intern* next=cur.next;
    delete cur;
    cur=NULL;
    cur=next;
  } 
}

PM MAIL   Вверх
baldina
Дата 18.11.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Код

class ment{
  int number;       // длинна стека
  struct intern{    // много записей
      intern* next; // ссылка связующая со следующим элементом стека
  }
  intern* head; // голова стека
  public:
    ~ment();
}

// это удаление от i до конца
/* так:
void del_intern(ment::intern* i) {                     // как правильно записать передачу элемента?
  if (i.next) 
     del_intern(i->next);      // переход к следующему элементу всписке, если он есть (рекурсия)
  delete i;                       // удаляем элемент стека
}

хотя лучше без рекурсии:
*/
void del_intern(ment::intern* i) {                     
  while (i)
  {
     ment::intern* next = i->next;
     delete i;
     i = next;
  }
}

ment::~ment(){
  del_intern (head);  //  если есть элементы то удаляем их
}


ment... интересное имя для класса...
PM MAIL   Вверх
Klio
Дата 18.11.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 18.4.2008
Где: Харьков - СС_3

Репутация: нет
Всего: 1



всем большое спасибо за помощь!!!

ment  -> middle enter () - в названиях не люблю ставить "_", только в функциях 
PM MAIL ICQ   Вверх
boostcoder
Дата 18.11.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



про shared_ptr<> никто не вспомнил smile 
PM WWW   Вверх
Леопольд
Дата 18.11.2010, 23:21 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 3
Всего: 13



boostcoder, ему не надо... smile


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0823 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.