Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите понять как работает функция.  (Прочитано 525 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Помогите пожалуйста понять как работает функция, если не сложно можете в комментах подписать... Нужно данную функцию на делфи перенести, просто C++ плохо знаю....

Это функция для создания кольцевых односвязных списков

void SKOS () //в функции опущено описание элементов списка
//создание списка с включенным заглавным элементом
{ node *sag,*s,*q;
//s,q-рабочие указатели
int a;
sag= new node;
sag->next=sag;
s=sag;
count<<"вводите элементы списка:\n";
count<<"(ввод завершите нулем)\n ";
cin>>a;
if (el !=0)
{
q= new node;
q->inf=a;
s->next=q; s=q;
cin>>a;
while (a !=0)
{
q=new node;
q->inf=a;
s->next=q; s = q;
cin>>a;
}
q->next=sag;
renurn;
}
« Последнее редактирование: 29 Март 2010, 20:33:43 от Callidus Furo »
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #1 : 30 Март 2010, 06:13:04 »
не функция а один большой memory leak =) прикольно!

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #2 : 30 Март 2010, 11:41:32 »
не функция а один большой memory leak =) прикольно!

А вы не могли бы закомментировать эту функцию, что бы я понял как она работает. Я ее на делфи сам сделаю.
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #3 : 30 Март 2010, 11:45:02 »
Цитировать
Это функция для создания кольцевых односвязных списков
По-моему это главные слова в посте... ;) Гугли про кольцевые списки!!!
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #4 : 30 Март 2010, 11:49:33 »
А Вы поработайте сами за компьютер, карандашом на бумаге. Самый верный способ во всем разобраться.

Возьмите лист бумаги, нарисуйте там квадратики, это будут переменные, подпишите их, впишите значения.
Стрелками обозначьте указатели.
Например, оператор присваивания
sag->next=sag;будет обозначен стрелкой, выходящей из квадратика, обозначенного "sag", и входящей в него же.

Двигаясь по ходу функции или по итерациям циклов, меняйте стрелки и значения переменных.

Не надо лениться! Свою голову Вам никто приставлять не будет.
« Последнее редактирование: 30 Март 2010, 11:52:41 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #5 : 30 Март 2010, 11:55:10 »
Элемент односвязного списка имеет такую структуру:
type
TNode = record
  Next: Pointer;
  Data: Некотрой_тип;
end;
Next указывает на адрес следующего Node, а Data содержит некоторые данные.
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #6 : 30 Март 2010, 12:04:58 »
Элемент односвязного списка имеет такую структуру:
type
TNode = record
  Next: Pointer;
...
end;
Точно Pointer, а не ^TNode?
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1686
  • ちのう の きょうかん
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #7 : 30 Март 2010, 12:06:31 »
Не. TNode еще не определен. Хотя... Сейчас проверю.

Пользователь решил продолжить мысль 30 Март 2010, 12:14:34:
Все перепутал :-[ Слишком много всяких языков за последнее время перепробовал... Извините.
Вот описание:
type
TNext = ^TNode;
TNode = record
  Data: integer | string | etc.;
  Next: TNext;
end;
В паскале рекурсивное описание типов недопустимо. Поэтому, приходится делать таким эквивалентом.
« Последнее редактирование: 30 Март 2010, 12:14:34 от Protopopulus »
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #8 : 31 Март 2010, 15:24:07 »
А Node я как понимаю это класс?
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #9 : 31 Март 2010, 15:49:32 »
Не Node, а TNode.
Не класс, а запись (record).
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Callidus Furo

  • Автор темы
  • Участник
  • *
  • Сообщений: 125
    • Просмотр профиля
Re: Помогите понять как работает функция.
« Ответ #10 : 31 Март 2010, 15:51:19 »
Не Node, а TNode.
Не класс, а запись (record).

Спасибо, теперь чего-то уже понятно =)
Ubuntu 10.10 x32 - home desktop
Ubuntu 10.10 x32 - job

 

Страница сгенерирована за 0.057 секунд. Запросов: 25.