Форум программистов, компьютерный форум CyberForum.ru

списки и динамическое выделение памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос по классам http://www.cyberforum.ru/cpp-beginners/thread12108.html
Есть такой код #include <iostream> class C1{ public: C1(){std::cout <<" 1 is open"<<std::endl;}; ~C1(){std::cout <<" 1 is close"<<std::endl;}; }; class C2{ public:
C++ Как создать папку (а не файл) в VS2003? как создать паку (а не файл) в с++? файл я создаю так - ofstream input_file("file.txt") ; а файл в уже существующей папке так ofstream input_file("folder/file.txt") ; http://www.cyberforum.ru/cpp-beginners/thread12105.html
C++ Найти угол между пересекающимися прямыми на плоскости
Суть заключается вот в чём Заданы уравнения пересекающихся прямых на плоскости Y=k1x+b1 и y=k2x+b2 найти угол в градусах и минутах между нимииспользую формулу tg=(k2-k1)/(1+k2*k1)
Крестики-нолики C++
Здраствуйте,помогите пожалуйсто с програмкои крестики нолики проблема не могу в вести символы. Вот собственно сам код рамки . #include<iostream> #include<time.h> usingnamespace std; void ramka(int vis,int shir)//a-visota,b-shirina { int kletka=3;
C++ Как создать класс, который содержит элементы другого класса http://www.cyberforum.ru/cpp-beginners/thread11999.html
Добрый день, я чисто любитель, начала сама потихоньку разбираться в с++, благополучно дошла до классов и сделала класс konto (банковский счет). Теперь я хочу сделать класс банк, в котором будут функции ДобавитьНовыйСчет, ДобавитьДенегНаУказанныйСчет, РаспечататьИнфуПоВсемСчетам и НайтиСчетПоНомеру. Но я не знаю как вообще сделать класс, который содержит элементы другого класса, читала про arrays...
C++ помогите пожалуйста в работе с ZIP архивами очень нужно автоматизировать распаковку zip-архива:wall: подробнее

Показать сообщение отдельно
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8506 / 2173 / 61
Регистрация: 07.03.2007
Сообщений: 10,844
Завершенные тесты: 1
05.09.2008, 12:50     списки и динамическое выделение памяти
вообщем поковырял я твой код... ошибки в двух местах:
Код
void AddList(LIST *list,char *name)
{
  int len=strlen(name);
  //выделение памяти под новый элемент
  LISTEL *listel=(LISTEL *)malloc(sizeof(LISTEL*));
  if (listel==NULL) return;
  listel->name=(char *)malloc(len+1);    //выделение памяти под строку
  if (listel->name==NULL) return;
  strcpy(listel->name,name); //копировать строку
  listel->left=NULL;
  listel->right=NULL;
  printf("add elem\n");
  //организация связи
  if(list->head==NULL) //список пуст
  {
    list->head=list->tail=listel;
  }
  else //добавление элемента в конец очереди
  {
    list->tail->left=listel;
    listel->right=list->tail;
    list->tail=listel;
  }
//ты адрес объекта передаешь в свой список, а потом сам объект удаляешь, а
//этого делать не надо, поэтому у тебя всегда пустой список

/*  free(listel->name);    
free(listel);
  listel->name=NULL;
  listel=NULL;*/
  list->size++;
}
а второй глюк тут:
Код
int DeleteName(LIST *list, char *name)
{
  LISTEL *ptr;
  //указанное имя не найдено
  if((ptr=FindName(list,name))==NULL) return 0;
  printf("del name %s\n",name);
  //удаление единственного элемента
  if(ptr==list->head&&ptr==list->tail)
  {
    printf("del one elem \n");
    list->head=list->tail=NULL;
  }
  else
    if(ptr==list->tail) //удаление  хвоста
    {
      printf("del tail \n");
      list->tail=list->tail->right;
      list->tail->left=NULL;
    }
    else
      if(ptr==list->head) //удаление головы
      {
      printf("del head \n");
    list->head=list->head->left;
    list->head->right=NULL;
      }
      else //удаление из середины
      {
      printf("del elem \n");
    (ptr->left)->right=ptr->right;
    (ptr->right)->left=ptr->left;
      }
//  free(ptr->name); - не знаю почему, но из-за этого выпадало в осадок
  free(ptr); - тем более ты и так память освобождаешь, так что предыдущая строка не нужна
  list->size--;
}
 
Текущее время: 05:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru