Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2013, 20:07   #1
Владислав_
 
Регистрация: 08.01.2013
Сообщений: 3
По умолчанию Надо создать функцию создания списка

Я вроде бы создал такую функцию, но прикол в том что, я не выкупаю правильно ли. Вот код ф-ции:
struct list
{
int b;
list *next;
};

list* sozd_list(int x)
{
srand(unsigned (time(NULL)));
list *a;
list *first;
a=new list;
first=a;
a->b=rand()%30;
for (int i=0; i<(x-1); i++)
{
a=a->next=new list;
a->b=rand()%30;
}
a->next=NULL;
return first;
};
Владислав_ вне форума Ответить с цитированием
Старый 08.01.2013, 20:37   #2
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

А кто память освободит?
SAMOUCHKA вне форума Ответить с цитированием
Старый 08.01.2013, 21:49   #3
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию

Код:
struct list
{
int b;
list *next;
};
этот класс больше похож на элемент списка. я бы назвал его elem.
а лист - это отдельный класс
Код:
struct elem{
	int data;
	elem *next;
	elem(int &a):data(a) {};
};

struct stack{
	elem *head;
        stack():head(NULL) {};       //это конструктор. он и есть функция, которая создает список.
	void add(int &);
};

void stack::add(int &newelem){          
        if(head==NULL){            //если пустой список
              head = new elem(newelem);
              head->next = NULL; //отметили, что элемент последний
        }
        else{                           //если в списке  уже есть элементы
	      elem *temp = new elem(newelem);
	      temp->next = head;
	      head = temp;
        }
};
и добавлять теперь просто:
Код:
stack stack1;           //создали список
for(short i=0; i<30; i++)      //добавляем 30 случайных элементов
      stack1.add(rand()%30);
Цитата:
А кто память освободит?
присоединяюсь, реализация деструктора необходима
denrubun вне форума Ответить с цитированием
Старый 09.01.2013, 00:07   #4
Владислав_
 
Регистрация: 08.01.2013
Сообщений: 3
По умолчанию

спасибо!
в принципе немного понял. ток объясни что это за строчка кода:
elem(int &a) : data(a) {};
Владислав_ вне форума Ответить с цитированием
Старый 09.01.2013, 00:34   #5
denrubun
Пользователь
 
Регистрация: 24.12.2012
Сообщений: 82
По умолчанию

это все равно что
elem (int &a){
data = a;
};
типа сокращеная запись, если не вдаваться в подробности.
называется список инициализации конструктора, если не ошибаюсь
denrubun вне форума Ответить с цитированием
Старый 09.01.2013, 02:27   #6
Владислав_
 
Регистрация: 08.01.2013
Сообщений: 3
По умолчанию

ага, что то все таки понял. огромное спасибо)
Владислав_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ написать функцию удаления последнего элемента из списка scrinn Помощь студентам 0 04.06.2012 23:56
Функция создания нового элемента списка C++ system_error Помощь студентам 5 03.05.2011 21:14
Создания списка значения ячеек от даты... kimor Microsoft Office Excel 2 02.09.2010 21:46
Без создания нового списка, а с мофидикацией исходного REztor Помощь студентам 0 08.12.2009 18:32
Без создания нового списка, а с мофидикацией исходного REztor Помощь студентам 0 10.11.2009 00:28