IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Списки, Не получается никак!
Izmort
сообщение 2.06.2009 13:02
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Валентин

Репутация: -  0  +


предположим, что уже построен и задан указателем P однонаправленный список элементами которого являются целые числа. Написать программу, которая из списка P удаляет все вхождения элемента E.

Подскажите, пожалуйста, как создать список в котором будут оба вида указателей - как E так и P?

Ниже я привел мои "старания", процедура построения списка и выведения на экран.



program S2L2_1 ;


type P_item1 = ^item1;
item1 = record
info : integer;
next : P_item1;
end;

type E_item2 = ^item2;
item2 = record
info : integer;
next : E_item2;
end;

var P_begin,P_temp : P_item1; E_temp: E_item2;
n : integer;


procedure Form;
var element,k : integer;
begin
randomize;
k:=20;
New(P_begin);
element:= random(10);
P_begin^.info := element;
P_begin^.next := nil;
P_temp := P_begin;
k:=k-1;
while k<>0 do
begin
element:=random(50);
new (P_temp^.next);
P_temp := p_temp^.next;
P_temp^.info := element;
P_temp^.next := nil;
element:=random(5);
new (E_temp^.next);
E_temp := E_temp^.next;
E_temp^.info := element;
E_temp^.next := nil;
k:=k-1;
end;
end;

procedure Print;
begin
P_temp := P_begin;
write(' ',P_temp^.info);
P_temp := P_temp^.next;
while E_temp <> nil do
begin
write(' ',P_temp^.info);
P_temp := E_temp^.next;
write(' ',E_temp^.info);
E_temp := P_temp^.next;
end;
writeln;
end;



begin

Form;
Print;
readln;

end.


Это конечно же не работает... Но я уже не знаю что еще можно сделать...
помогите пожалуйста, у меня уже нет сил издеваться над этой задачей...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Izmort
сообщение 2.06.2009 15:30
Сообщение #2





Группа: Пользователи
Сообщений: 6
Пол: Мужской
Реальное имя: Валентин

Репутация: -  0  +


Задачи, пусть задачи...

type P_item = ^item;
item = record
info : integer;
next : P_item;
end;
{Тут строиться список}
var P_begin,P_temp : P_item;
n, e, x : integer;
procedure Form;
var element,k : integer;
begin
randomize;
k:=random(100);
New(P_begin);
element:= random(20);
P_begin^.info := element;
P_begin^.next := nil;
P_temp := P_begin;
k:=k-1;
while k<>0 do
begin
element:=random(10);
new (P_temp^.next);
P_temp := p_temp^.next;
P_temp^.info := element;
P_temp^.next := nil;
k:=k-1;
end;
end;

{Тут мы выводим его на экран}
procedure Print;
begin
P_temp := P_begin;
while P_temp <> nil do
begin
write(' ',P_temp^.info);
P_temp := P_temp^.next;
end;
writeln;
end;

{Удаление Е из списка}
procedure DelE;
begin
writeln('BBedume E');
readln(E);
P_temp := P_begin;
while P_temp <> nil do;
begin
x:=P_temp^.info;
if x=e then
Begin
P_temp := P_temp^.next;
P_temp^.next := P_temp^.next^.next;
Dispose(P_temp);
end
else P_temp := p_temp^.next;
end;
end;

begin
Form;
Print;
DelE;
Print;
readln;
end.




тока теперь она виснет, где ошибка? Подскажите плз
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.07.2025 11:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"