![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - стек, список в паскале абц (поясните) |
|
Разное - стек, список в паскале абц (поясните)
|
Новый участник Сообщения: 3 |
вобщем есть программа, рабочая 100%
не пойму процедуру удаления зачем нам ? begin u:=last; v:=first; while u^.next<>first do begin u:=u^.next; end; first:=u; first^.next:=nil; dispose(v); uses Formsabc; type PNode = ^TNode; //Это наш указатель (ссылка) TNode = record //описание одной ячейки очереди color: string[30]; // рабочие данные kod:string[10]; next: PNode; // указатель на следующий элемент очереди end; var first,last: PNode; // переменная, через которую будет общаться с очередью - это и есть "голова" очереди bt1,bt2,bt3:button; l:listbox; d,k:Field; procedure Add(var first:PNode;var last:PNode); var n:PNode; Begin new(n); n^.color:=d.text; n^.kod:=k.text; n^.next:=nil; if first=nil then begin first:=n; last:=n; end else begin n^.next:=last; last:=n; end; End; procedure Addelement; begin Add(first,last); end; procedure Print; var r:PNode; begin l.Items.Clear(); r:=Last; while r<>nil do begin l.Items.Add(r^.color+' - '+r^.kod.ToString()); r:=r^.next; end; end; procedure del(var first,last:PNode); Var v:PNode; u:PNode; begin if first=last then begin dispose(last); first:=nil; last:=nil; end else begin u:=last; v:=first; while u^.next<>first do begin u:=u^.next; end; first:=u; first^.next:=nil; dispose(v); end; end; procedure delelement; begin del(first,last); end; procedure Main; Begin bt1:=new Button('Добавить'); bt2:=new Button('Показать'); bt3:=new Button('Удалить'); LineBreak; d:=new Field('Цвет',150); LineBreak; k:=new Field('код цвета',100); LineBreak; l:=new ListBox(); LineBreak; bt1.click+=Addelement; bt2.Click+=Print; bt3.Click+=delelement; end; BEGIN Main; END. |
|
Отправлено: 14:59, 08-01-2013 |
Необычный Сообщения: 4466
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Евгений_Еров@vk:
Если зачем -- то для красоты и полного набора функционала. Создание/добавление/удаление. Если как -- убивает ссылки и стирает данные, высвобождая память. |
|
------- Отправлено: 01:38, 09-01-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 19:22, 10-01-2013 | #3 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Полностью очищает стек
|
------- Отправлено: 03:00, 11-01-2013 | #4 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата ViRTaCe:
|
||
Отправлено: 09:21, 11-01-2013 | #5 |
Новый участник Сообщения: 3
|
Профиль | Сайт | Отправить PM | Цитировать то есть этот кусочек удаляет указатель на удаленный элемент?
|
Отправлено: 20:44, 13-01-2013 | #6 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Нет, этот код присваивает указателю значение nil, а зтем элемент удаляется dispose(v);
|
Отправлено: 22:25, 13-01-2013 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - Стек | ve4niy | Программирование и базы данных | 2 | 17-04-2011 22:41 | |
Разное - Стек в Паскале | zena | Программирование и базы данных | 0 | 30-11-2010 22:50 | |
Log/Monitoring - стек OSI на Windows | mall-rnd | Сетевые технологии | 0 | 17-02-2010 17:57 | |
C/C++ - Класс стек и очередь на с++ | aina | Программирование и базы данных | 8 | 30-12-2009 07:54 | |
Теория - Стек, заданный списком, на Паскале. | ManHack | Программирование и базы данных | 9 | 07-04-2009 23:48 |
|