Помогите пожалуйста по образцу этой программы выполнить следующие задания :
1. Написать программу поиска максимального элемента в линейном однонаправленном списке.
2. Написать программу поиска минимального элемента в линейном однонаправленном списке
Либо если незатруднит написать с нуля новую программу!
{
Spiski
}
program list;
uses crt;
type
typeofelement = integer;
spisok = ^knot;
knot = record
data: typeofelement; { Tip dannyh }
next: spisok; { Sledujushii element }
end;
var
esim: spisok; { Pervyi element }
p: spisok; { Ukazatel }
pp: spisok; { Ukazatel dlja vnesenija elementa v centr }
pnew: spisok;
key: integer;
{ dobavljaet pervyi element }
procedure add_first;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=nil; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');
readln;
end;
{ vyvodit spisok na ekran }
procedure show;
begin
clrscr;
{ Esli pervyi pust, to vyvodim soobshhenie }
if esim = nil then
writeln('Spisok pust!')
else
{ Esli ne pust, to vyvodim spisok na ekran }
begin
writeln('Spisok:');
p := esim;
while p <> nil do
begin
writeln(p^.data);
p := p^.next;
end;
end;
readln;
end;
{ dobavljaet ocherednoi element v konec }
procedure add_to_end;
begin
clrscr;
new(p);
writeln('Vvedite element:');
readln(p^.data);
p^.next:=nil; { Sledujushii element - NIL }
esim^.next:=p;
writeln('Element dobavlen!');
readln;
end;
{ dobavljaet ocherednoi element v nachalo }
procedure add_to_begin;
begin
clrscr;
new(p);
writeln('Vvedite element:');
readln(p^.data);
p^.next:=esim;
esim:=p;
writeln('Element dobavlen!');
readln;
end;
{ menu }
procedure menu;
begin
writeln('1 - Dobavlenie pervogo elementa');
writeln('2 - Dobavlenie ocherednogo elementa v konec');
writeln('3 - Dobavlenie ocherednogo elementa v nachalo');
writeln('4 - Vyvod spiska na ekran');
writeln('0 - Vyhod');
end;
{ glavnaja programma }
begin
repeat
clrscr;
menu;
readln(key);
case key of
1: add_first; { Dobavit pervyi element }
2: add_to_end; { Dobavit element v konec }
3: add_to_begin; { Dobavit element v nachalo }
4: show; { Vovesti spisok na ekran }
end;
until
key = 0;
end.
Во-первых - пользуйся тегами... А во-вторых, все действия со списками производятся по образу процедуры Show...
Вот так, например, находится минимальный элемент:
function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;
Огромное тебе спасидо!!! А как зделать так чтобы в меню дабовление элементта можно было добавлять несколько елементов а не один! Я так понимаю нужно использывать цыкл. Но как его сёда вписать чтоб всё работало ??
Так попробуй:
procedure add_first;
var answer: char;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
repeat
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=nil; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');
write('Добавить еще элемент? (y/n)'); readln(answer);
until upcase(answer) = 'N';
readln;
end;
Нет так неполучается вовод идёт много раз а вот запоминает он только 1 элемент который был введён последним! А мне нужно чтоб например в начале можно былло ввести данные сколько элементов будет в списке а потом все эти елементы ввести и чтоб они все сохранились и из этого списка найти наименьший елемент а потом наибольший............. Тебе несложно будет написать полностью весь код программы ??? чтоб нече лишнего там небыло.... только позаданию... мне скоро это здавать а решения нету паподаю жестоко
p^.next:=esim; { Ochishhaem sledujushhii element }... Тогда все работает.
Вот условие
1. Написать программу поиска максимального элемента в линейном однонаправленном списке.
2. Написать программу поиска минимального элемента в линейном однонаправленном списке
Вот как бы ты её решил ???
И что то я непонял что ты изменил она там такаяже и есть.... p^.next:=nil;
Извеняюсь а мне в начале показалось что ты написал тоже самое что и было в исходнике. У меня остался последний вопрос : Вы мне написали вот эту функцию :
function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;
{
Spiski
}
program list;
uses crt;
type
typeofelement = integer;
spisok = ^knot;
knot = record
data: typeofelement; { Tip dannyh }
next: spisok; { Sledujushii element }
end;
var
esim: spisok; { Pervyi element }
p: spisok; { Ukazatel }
pnew: spisok;
key: integer;
{ dobavljaet pervyi element }
procedure add_first;
var answer: char;
begin
clrscr;
esim:=nil; { Ochishhaem pervyi element }
repeat
new(p); { Vydeljaem pamjat }
writeln('Vvedite element:');
readln(p^.data); { Zapolnjaem element }
p^.next:=esim; { Ochishhaem sledujushhii element }
esim:=p;
writeln('Element dobavlen!');
write('Добавить еще элемент? (y/n)'); readln(answer);
until upcase(answer) = 'N';
readln;
end;
{ vyvodit spisok na ekran }
procedure show;
begin
clrscr;
{ Esli pervyi pust, to vyvodim soobshhenie }
if esim = nil then
writeln('Spisok pust!')
else
{ Esli ne pust, to vyvodim spisok na ekran }
begin
writeln('Spisok:');
p := esim;
while p <> nil do
begin
writeln(p^.data);
p := p^.next;
end;
end;
readln;
end;
{noxogdenie nininun}
function min: typeofelement;
var
min_value: typeofelement;
p: spisok;
begin
min_value := maxint;
p := esim;
while p <> nil do begin
if p^.data < min_value then min_value := p^.data;
p := p^.next;
end;
min := min_value;
end;
{ menu }
procedure menu;
begin
writeln('1 - Dobavlenie pervogo elementa');
writeln('2 - Vyvod spiska na ekran');
writeln('3 - Naxodim minimum');
writeln('0 - Vyhod');
end;
{ glavnaja programma }
begin
repeat
clrscr;
menu;
readln(key);
case key of
1: add_first; { Dobavit pervyi element }
2: show; { Vovesti spisok na ekran }
3 : min;
end;
until
key = 0;
end.