дан список А, который состоит из записей: первое полее речовинне число, второе поле - адрес следующего елемента, составить програму для вставки нового елемента Е1 перед последним вжодом елемента Е, если елемент есть в списке А.
maksimla
23.12.2008 22:24
пример можешь дать ? и программу свою что неполучается
B&M
23.12.2008 22:34
вот пример ток тут данный список с целыми числами в информационном поле, изменить все значения елементов списка равных Х увеличить в 5 раз
program 12; type sp=^elem; elem=record info1:=integer; next:sp; end; var beg,p:sp; n,x:integer; {n=во сколько раз увеличить} begin writeln('input x,n'); readln(x,n); p:=beg; while p<>nil do begin if p^.info=x then p^.info:=p^.info*n; p:=p^.next; end; writeln('new spisok'); p:=beg; while p<>nil do begin write (p^.info,' '); p:=p^.next; end; readln; readln; end.
Eskel
23.12.2008 22:38
procedure obr(h:ukazat; x:integer); var r:ukazat; begin new®; r^.next:=h^.next; h^.next:=r; r^.ed:=h^.ed; h^.ed:=x end;
Вот, к примеру, вставка элемента х(Е1). h-ссылка на Е. Но я делал прогу, которая перед первым Е вставляет... надо подумать как последний Е найти...
B&M
23.12.2008 22:41
это пример вставки елемента перед к-ым елементом
buf;=p^.info; p^.info:=pk^.info; pk^.info:=buf;
p:=pk^.next; write (p^.info); pk^.next:=p^next;
B&M
24.12.2008 0:13
вот посмотрите тут плиз тук какието ошибки
program Project2;
{$APPTYPE CONSOLE}
uses SysUtils;
type sp=^elem; elem=record info1:string[20]; next:sp; end; var beg,p,pk,buf:sp;
begin
p:=beg; while p<>nil do begin buf:=p^.info1; p^.info1:=pk^.info1; pk^.info1:=buf; p:=pk^.next; write(p^.info1); pk^.next:=p^.next; end; dispose(p); readln; readln;
{ TODO -oUser -cConsole Main : Insert code here } end.
B&M
24.12.2008 4:22
{ дан список А, который состоит из записей: первое поле - вещественное число, второе - адрес следующего элемента. нужно составить программу для вставки нового элемента Е1 перед последним вхождением элемента Е, если элемент есть в списке А. }
вотвам ее решение
program p2227;
{$APPTYPE CONSOLE}
uses SysUtils;
type PRec = ^TRec; TRec = packed record Value: Real; // Значение NextLink: PRec; // Ссылка на следующий элемент PrevLink: PRec; // Ссылка не предыдущий элемент end;
// Функция создания списка и инициализация элементов случайными числами function MakeList(const Count: Cardinal): PRec; var Rec, Next: PRec; Index: Integer; begin New(Rec); Rec.Value:= Random(100); Rec.PrevLink:= nil; Result:= Rec;
Index:= Count - 1; while Index > 0 do begin New(Next); // следующий элемент Next.Value:= Random(100); Rec.NextLink:= Next; // Ссылка на следующий элемент Next.PrevLink:= Rec; // Ссылка не предыдущий элемент Next.NextLink:= nil; Rec:= Next; Dec(Index); end; end;
// Освобождение памяти из-под списка procedure FreeList(var AList: PRec); var Rec, Next: PRec; begin Rec:= AList; while Assigned(Rec) do begin Next:= Rec.NextLink; Dispose(Rec); Rec:= Next; end; end;
// Вывод списка на экран procedure PrintList(const AList: PRec); var Rec: PRec; Count: Cardinal; begin WriteLn('List: '); Rec:= AList; Count:= 0;
while Assigned(Rec) do begin Write(Rec.Value: 8: 2); Rec:= Rec.NextLink; Inc(Count); end;
WriteLn(#13#10' Total count: ', Count); end;
// Поиск последнего вхождения элемента в списке function SearchLast(const AList: PRec; const Value: Real): PRec; var Rec: PRec; begin Rec:= AList; Result:= nil;
while Assigned(Rec) do begin if Rec.Value = Value // Хреновое сравнение, кстати. Числа-то вещественные! then Result:= Rec; Rec:= Rec.NextLink; end; end;
// Вставка нового элемента перед элементом ARec procedure InsRec(ARec: PRec; const Value: Real); var NewRec: PRec; begin New(NewRec); NewRec.Value:= Value; NewRec.NextLink:= ARec; NewRec.PrevLink:= ARec.PrevLink; ARec.PrevLink.NextLink:= NewRec; ARec.PrevLink:= NewRec; end;
var List, Rec: PRec; E, E1: Real; // Что вставляем
begin List:= MakeList(8); PrintList(List);
Write('Enter "E" to search: '); ReadLn(E); Rec:= SearchLast(List, E); // Поиск последнего вхождения элемента Е в список if Assigned(Rec) then begin Write('Element found. Enter "E1" to insert: '); ReadLn(E1); InsRec(Rec, E1); WriteLn('List after insert: '); PrintList(List); end else WriteLn(' Value ', E: 8: 2, ' not found.');
FreeList(List);
Write(#13#10' Press "ENTER" to exit...'); ReadLn; end.
Lapp
24.12.2008 6:20
B&M, пожалуйста, прочти Правила Форума и старайся их выполнять (пункт 5).
М
Исправь свои сообщения.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.