списки ООП |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
списки ООП |
ssk |
14.05.2006 11:05
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
Кому не трудно помогите, нужно несколько процедур:
1.Для однонапрвленного списка а) найти наибольший элемент б) удалить все простые числа в)найти кол-во четных чисел г) Вставить новый элемент между двумя равными по значению 2.Для двунаправленного списка а)найти наибольший элемент(исп наследовательный метод) б)найти количество четных (исп наследовательный метод) Выручите пожалуйста, много других еще проблем а голова уже совсем не варит Реализация списка: Код type list=^elem; elem=record inf:integer; next,pred:list; end; sp=object l:list; procedure init; procedure add(x:integer; p: list); procedure del(p:list); function locate(x:integer):list; function retrieve(p:list):integer; function end_:list; function first:list; procedure print; end; sp2=object l:list; procedure init; procedure add(x:integer; p: list); procedure del(p:list); function locate(x:integer):list; function retrieve(p:list):integer; function end_:list; function first:list; procedure print; end; procedure sp.init; begin new(l); l^.inf:=0; l^.next:=nil; end; procedure sp.add; var t:list; begin new(p^.next); p^.next^.info:=x; p^.next^.next:=t; end; procedure sp.del; begin p^.next:=p^.next^.next; end; function sp.locate; var p,q:list begin p:=l; q:=nil; while p^.next<>nil do begin if p^.inf=x then q:=p; p:=p^.next; end; locate:=q; end; function sp.retrieve; var q:list;begin q:=l;Retrieve:=0; while q^.next<>nil do begin if q^.next=p then Retrieve:=q^.inf; q:=q^.next; end; end; function sp.end_; var q:list; begin q:=l; while q^.next<> nil do q:=q^.next; end_:=q; end; function sp.first; begin first:=l^.next; end prosedure sp.print; var q:list; begin q:=l; while q<>nil do begin writeln(q^.info); q:=q^.next; end; end; procedure sp2.init; begin new(l1); l1^.inf:=0; l1^.next:=l1; l1^.pred:=l1; end; function sp2.locate; var p,q:list; begin p:=l1^.next; q:=nil; while p<>l1 do begin if p^.inf=x then q:=p; p:=p^.next; end; Nmesto:=q; end; rocedure sp2.print; var p:list; begin writeln('Vivod polu4ennogo spiska'); p:=l1^.next; while p<>l1 do begin write(p^.inf,' '); p:=p^.next; end; writeln; end; var s:sp; x:integer; begin sp.init; readln (x); while x <> 0 do begin sp.add(x,sp.end_); readl(x); end; writeln(sp.retrieve(sp.first)); sp.print; end. |
volvo |
14.05.2006 12:21
Сообщение
#2
|
Гость |
Ну, во-первых, где ты тут увидел реализацию списка? Я же приводил ООП-реализацию в теме
"FAQ: Объектно-ориентированное Программирование" ... Для односвязных списков твое задание решается вот так: type(просто оформи нужные фрагменты программы как методы класса TList) С двусвязными попробуй разобраться сам... |
ssk |
14.05.2006 12:41
Сообщение
#3
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Сергей Репутация: 0 |
О, огромное спасибо
|
Текстовая версия | 28.03.2024 13:17 |