1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
В общем задача заключается в том чтобы после елемента списока P1,с ключем Х,равным задаваемому значению А,вставить список P2.
Type TElem = string;
TList = ^TNode; TNode = record Info: TElem; Next: TList end; var P1,P2:TList; r:TList; A:integer;
Procedure Insert(var P1: Tlist; x : integer); begin new®; r^.info:=x; r^.next:=P1^.next; P1^.next:=r; end;
Тут я беру элемент из списка п2 и записываю его после элемента с ключем Х.В общем моя идея заключалась в том,чтобы создать процедуру,которая будет юзять insert и потихоньку выдирая из п2 по 1 элементу вставлять их каждый раз сдвигая ключ на 1,тем самым впихнуть весь список, но как это реализовать хз.
Так же есть вопрос немного в другой области.Необходимо взять из конца дека V элементов и вставить их в стек,вот тут приветствуются лбые идеи,потому что своих совсем нет((( P.s.Просьба на фак не тыкать прочитал и не один,но если есть конкретные вещи из фака ,тобуду только рад.
"Взять из дека последние V элементов и записать их в стек".Вот такое вот задание,А сделать, как угодно.
Насчет рекурсивного пробела,уже привычка,с того момента,как синтаксический анализатор писал.Реализацию стека и дека чуть позже выыложу,а щас,пересмотрел идею с функцией char to int и пришел к такому варианту
Procedure SeachAndInsert(P1,P2: point ; x : integer); var flag : boolean; save:Point; begin flag:=true; while (P1<>nil) and flag=true do begin if P1^.number=x then begin flag:=false; save^.next:=P1^.next; end else begin P1:=P1^.next; end; end; P1^.next:=P2; while P2^.next<> nil do P1:=P2^.next; P1^.next:=save^.next; end;
Procedure Create(var p : point; var fin:text); var r,m:point; begin new®; reset(fin); while not eof(fin) do begin new(m); read(fin,m^.number); m^.next:=nil; r^.next:=m; p:=m; write(p^.number); end; close(fin); end;
Procedure BListPrint( P : point ); begin write('< '); while P <> nil DO begin write( P^.number ); If P^.Next <> nil then write(','); P := P^.Next end; writeln(' >') end;
begin clrscr; chdir('C:\Tpascal'); assign(fin1,'test1.txt'); assign(fin2,'test2.txt'); Create(P1,fin1); BListPrint(P1); Create(P2,fin2); BListPrint(P2); writeln('‚ўҐ¤ЁвҐ Ї а ¬Ґва Ђ:'); read(A); SeachAndInsert(P1,P2,A); BListPrint(P1); end.
Оба списка корректно заполняются,а вот вывод почему дает пустой вариант и еще добавление у меня не получилось проверить.