27.11.2012, 01:01 | #1 (permalink) |
Новичок
Регистрация: 25.07.2012
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Работа со списками
Вот код программы : Код:
program spiski; {Удалить из списка 2 элемента,стоящие перед последним элементом списка} {$APPTYPE CONSOLE} uses SysUtils,CRT32; type u=^zap; zap=record inf:Integer; ukz:u; end; var PSP:u; {Указатель списка} ch:Char; procedure Create_list(Var PSP:U); Var Q, {указатель предыдущего элемента списка} P:U;{Указатель текущего элемента списка} Ch:Char; Begin New(Q); Write('Vvedite inform.pole elementa : '); Readln(Q^.Inf); PSP:=Q; Write('Prodoljit'' vvod ? y/n '); Readln(ch); while Ch in ['y','Y','н','Н'] do begin New(P); Write('Vvedite inform.pole elementa : '); Readln(P^.INF); Q^.ukz:=P; Q:=P; Write('Prodoljit'' vvod? y/n '); Readln(ch); end; Q^.ukz:=nil; end; procedure print_list(PSP:u); {Процедура печати элементов списка.PSP-указатель списка} var t:u; begin if PSP=nil then begin Writeln('Spisok pust'); Readkey; Exit; end; Writeln('Soderjimoe spiska: '); t:=PSP; while t<>nil do begin write(t^.inf,'--> '); t:=t^.ukz; end; Writeln('NIL'); Writeln('Najmite ljubuju klavishu'); ReadKey; end; procedure del_chnode (var PSP:U); var Q,P:U; Begin P:=PSP; while(P^.Ukz<>nil) do Begin Q:=P; P:=P^.ukz; end; if P^.inf div 2 =0 then begin Q^.ukz:=P^.ukz; P:=P^.ukz; Dispose(P); End; While P<>nil do begin write(P^.inf,'-->'); P:=P^.Ukz; end; End; procedure destroy_list(var PSP:u); {Процедура освобождения памяти,занятой элементами списка.PSP-указатель списка} var t:u; begin while PSP<>nil do begin t:=PSP; PSP:=PSP^.ukz; dispose(t); {Освобождение памяти} end; end; begin PSP:=nil; repeat ClrScr; Writeln('1.Sozdat'' spisok '); Writeln('2.Prosmotret'' spisok'); Writeln('3.Udalit'' 2 elementa spiska,stojashih pered poslednim'); Writeln('4.Udalit'' spisok'); Writeln('-------------------------------------------------------'); Writeln('0.Vihod'); Writeln; write('Vash vibor: '); ch:=ReadKey; Writeln(ch); Writeln; case ch of '1': begin psp:=nil; Create_list(PSP); end; '2':print_list(PSP); '3':del_chnode(PSP); '4': begin destroy_list(PSP); Writeln('Spisok udalyon'); ReadKey; end; end; until ch='0'; end. |
27.11.2012, 01:01 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
По этим ссылкам обсуждения которые так или иначе схожи с вашим Работа с матрицами Моя первая работа Моя первая работа Работа болгаркой. Работа |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|