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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 20:29   #1
Dower
Пользователь
 
Регистрация: 09.03.2009
Сообщений: 20
По умолчанию Турбо Паскаль - Списки

Помогите решить.

Напишите функцию, вставляющую дополнительный элемент после указанного узла.

Заранее спасибо за помощь.
Dower вне форума Ответить с цитированием
Старый 04.10.2009, 08:59   #2
Dower
Пользователь
 
Регистрация: 09.03.2009
Сообщений: 20
По умолчанию

Неужели никто не знает?
Dower вне форума Ответить с цитированием
Старый 04.10.2009, 09:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

знают.. Вы не поверите, но тут очень многие знают, как это сделать!!

А в чём собственно проблема?!
Это же элементарно!!
находите нужный узел.( пусть будет Destination), ссылку из него пишете в свой новый элемент (NewElement.Next := Destination.Next), а в него - ссылку на новый (Destination.Next := NewElement)
всё.

А если вышесказанное непонятно (или у Вас список двухнаправленныей или организован по другому) - давайте Ваши наработки... поможем.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 04.10.2009, 10:29   #4
Dower
Пользователь
 
Регистрация: 09.03.2009
Сообщений: 20
По умолчанию

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

Program Labolator_01;
uses crt;
type List=^node;
node=record
info:real;
next:List;
end;
var L,six,one:List;
i,n,par:integer;
e:real;

procedure Form(elem:real;var L:List);

begin
if L<>nil then Form(elem,L^.next)
else begin
New(L); L^.info:=elem; L^.next:=nil;
end;
end;

procedure Print(L:List);
begin
while L<>nil do begin
write(L^.info:0:2,' ');
L:=L^.next;
end;
writeln('<---');
end;

procedure del(L:List);

begin
par:=1;
while L<>nil do begin
if par=4 then
begin
L^.next:=L^.next^.next;
end;
L:=L^.next;
par:=par+1;
end;
end;

BEGIN

par:=1;
clrscr; randomize;
write('n='); readln(n);
for i:=1 to n do Form(10*random,L);
Print(L);
del(L);
Print(L);
writeln;
readln;
END.
Dower вне форума Ответить с цитированием
Старый 04.10.2009, 10:53   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

повторю вопрос - и что Вам непонятно?! я же привёл алгоритм! (и даже имя поля совпало! )

Очень сильно подозреваю, что программку взяли у одногруппника и ничего в ней не понимаете... ;(
не хотите/не можете делать сами - тогда Вам легко сделают это за деньги. Но, честно говоря, тут дел минут на 15... Да и Вам же больше пользы будет.
Делаете так:
1) ввод номера требуемого узла (ну, или значения поля info - как Вы там будете определять, какой узел заданный - Ваше дело...)
2) перебор данных и находите заданный узел.
если не нашли - сообщение и выход!
2) запрос о сохраняемых данных (чему будет равно поле info)
3) по вышеуказанному алгоритму добавляете запись и вставляете её после найденного узла.

всё.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Турбо паскаль Ильшатиккк Фриланс 14 16.09.2009 11:57
Турбо Паскаль Maxsimo Паскаль, Turbo Pascal, PascalABC.NET 0 06.05.2009 17:05
Турбо паскаль Gabi Помощь студентам 2 24.12.2008 22:18
Турбо Паскаль Jondeer Помощь студентам 3 28.10.2007 12:42
Турбо Паскаль Jondeer Помощь студентам 5 27.10.2007 17:19