![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Andrewshkovskii |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 222 Пол: Мужской Реальное имя: Andrew Репутация: ![]() ![]() ![]() |
Проблема следущая,при добавлении справа,теряются 2 элемента,код,по-моему мнения верный,возможно проблема в том,что нет передачи параметров?...
Модуль с типом UNIT TYPES;
INTERFACE
type
ts = ^nvs;
nvs = record
name: string[15];
Llink: ts;
Rlink: ts;
end;
IMPLEMENTATION
END.
Вот код модуля : unit spisok;
INTERFACE
uses types;
procedure output2S;
procedure input2S;
procedure add_left;
procedure add_right;
procedure delsearch3_left(del:boolean);
procedure delsearch3_right(del:boolean);
IMPLEMENTATION
var
left,right,a:ts;
i: integer;
n: string;
procedure input2S;
var
i,j:byte;
begin
writeln('Vvedite kol-vo vagonov v sostave');
readln(j);
for i:=1 to j do
begin
writeln('Vvedite nomer vagona:');
readln(n);
new(a);
a^.name:=n;
a^.llink:=nil;
a^.rlink:=left;
left:=a;
right:=a;
end;
end;
procedure output2S;
begin
writeln('Sostav : ');
a:=left;
repeat
write(a^.name,' ');
a:=a^.rlink;
until a=nil;
writeln;
end;
procedure add_left;
begin
writeln('Dobovlyaem element sleva');
writeln('Vvedite nomer vagona:');
readln(n);
new(a);
a^.name := n;
a^.llink:=nil;
left^.llink:=a;
a^.rlink:=left;
left:=a;
end;
procedure add_right;
begin
writeln('Dobovlyaem element sprava');
writeln('Vvedite nomer vagona:');
readln(n);
new(a);
a^.name := n;
a^.rlink:=nil;
right^.rlink:=a;
a^.llink:=right;
right:=a;
end;
procedure delsearch3_left(del:boolean);
var
pos: byte;
flg: boolean;
begin
writeln('Vvedite iskomii vagon');
readln(n);
flg:=false;
pos:=0;
a:=left;
repeat
if a^.name = n then
flg:=true
else
a:=a^.rlink;
pos:=pos+1;
until (a=nil) or (flg=true);
if flg=true then
writeln('Pozicija vagona v sostave = ', pos)
else
writeln('Iskomogo elementa net.');
if (del=true) and (flg=true) then
begin
if (a<>left) and (a<>right) then { v centre }
begin
a^.llink^.rlink:=a^.rlink;
a^.rlink^.llink:=a^.llink;
dispose(a);
end;
if (a=left) and (a=right) then { edinstvennij }
begin
dispose(a);
right:=nil;
left:=nil;
end;
if (a=left) and (a<>right) then { krajnij sleva }
begin
a:=left;
left:=left^.rlink;
left^.llink:=nil;
dispose(a);
end;
if (a=right) and (a<>left) then { krajnij sprava }
begin
a:=right;
right:=right^.llink;
right^.rlink:=nil;
dispose(a);
end;
end;
end;
procedure delsearch3_right(del:boolean);
var
pos: byte;
flg: boolean;
begin
writeln('Vvedite iskomii vagon');
readln(n);
flg:=false;
pos:=0;
a:=right;
repeat
if a^.name = n then
flg:=true
else
a:=a^.llink;
pos:=pos+1;
until (a=nil) or (flg=true);
if flg=true then
writeln('Pozicija vagona v sostave = ', pos)
else
writeln('Iskomogo elementa net.');
if (del=true) and (flg=true) then
begin
if (a<>left) and (a<>right) then { v centre }
begin
a^.llink^.rlink:=a^.rlink;
a^.rlink^.llink:=a^.llink;
dispose(a);
end;
if (a=left) and (a=right) then { edinstvenniy }
begin
dispose(a);
right:=nil;
left:=nil;
end;
if (a=left) and (a<>right) then { krajnij sleva }
begin
a:=left;
left:=left^.rlink;
left^.llink:=nil;
dispose(a);
end;
if (a=right) and (a<>left) then { krajnij sprava }
begin
a:=right;
right:=right^.llink;
right^.rlink:=nil;
dispose(a);
end;
end;
end;
|
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 15:37 |