![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Catherinektz |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Екатерина Репутация: ![]() ![]() ![]() |
Здравствуйте, мне нужна помощь, я сделала все процедуры (ниже в программе), а процедуру Remove(var x:PNode) не знаю как сделать! Помогите, пожалуйста. В ней нужно удалить текущий элемент x линейного списка.
Program Labal1_2; Сообщение отредактировано: Lapp - 16.03.2012 4:07 |
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() a.k.a. volvo877 ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация: ![]() ![]() ![]() |
Можно посмотреть на окончательный вариант программы? Конкретно - уточни, что именно по-твоему должна делать процедура Remove? И как находится тот элемент, который в Remove передается? И как, наконец, вызывается эта самая Remove...
|
Catherinektz |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Екатерина Репутация: ![]() ![]() ![]() |
Можно посмотреть на окончательный вариант программы? Конкретно - уточни, что именно по-твоему должна делать процедура Remove? И как находится тот элемент, который в Remove передается? И как, наконец, вызывается эта самая Remove... Procedure Remove(Var x:PNode); Var r:PNode; Begin r:=x^.next; If r<>nil Then Begin x^:=r^; Dispose®; End Else DelLast(x); End; В программе: WriteLn('Удаление текущего элемента x линейного списка:'); Remove(u); PrintList(u); Я думаю, что нужно ввести еще переменную, где будем указывать какой именно элемент в списке, и затем он его будет удалять. Добавлено через 6 мин. Вот вся моя программа: Program Labal1_2; Uses crt; Type PNode=^Node; Node=Record data:Integer; next:PNode; End; Var u,y:PNode; n,k:Integer; Procedure AddFirst(k:Integer; var p:PNode); var t:PNode; Begin New(t); t^.data:=k; t^.next:=p; p:=t; End; Procedure InputList(var p:PNode; n:Integer); Var i,k:Integer; Begin For i:=1 To n Do Begin Write('Введите k:'); ReadLn(k); AddFirst(k,p) End; End; Procedure PrintList(p:PNode); Begin while p<>nil Do Begin Write(p^.data, ' '); p:=p^.next; End; WriteLn; End; Procedure DelFirst(var p:PNode); Var t:PNode; Begin t:=p; p:=p^.next; dispose(t); End; Procedure DelNext(x:PNode); Var t:PNode; Begin t:=x^.next; x^.next:=t^.next; dispose(t); End; Procedure DelLast(var x:PNode); Var q:PNode; Begin If x^.next=nil Then DelFirst(x) Else Begin q:=x; While q^.next^.next<>nil Do q:=q^.next; DelNext(q); End; End; Procedure Delete(n:Integer; var p:PNode); Var i,k:Integer; Var q:PNode; Begin If n=1 Then DelFirst(p) Else Begin q:=p; For i:=1 To n-2 Do Begin If q^.next=nil Then Break Else q:=q^.next; End; If q^.next<>nil Then DelNext(q) Else WriteLn('Нет столько элеметов в списке'); End; End; Procedure Clear(var p:PNode); Begin While p<>nil Do DelFirst(p); End; Procedure Remove(Var x:PNode); Var r:PNode; Begin r:=x^.next; If r<>nil Then Begin x^:=r^; Dispose®; End Else DelLast(x); End; Begin Clrscr; WriteLn('Тестирование'); Writeln('Введите количество элементов в списке:'); Read(k); InputList(u,k); PrintList(u); WriteLn('Удаление первого элемента:'); DelFirst(u); PrintList(u); WriteLn('Удаление элемента следующего за:'); DelNext(u); PrintList(u); WriteLn('Удаление последнего элемента:'); DelLast(u); PrintList(u); WriteLn('Удаление текущего элемента x линейного списка:'); Remove(u); PrintList(u); WriteLn('Удаление заданного элемента:'); WriteLn('Введите номер элемента'); ReadLn(n); Delete(n,u); PrintList(u); WriteLn('Удаление всего списка:'); Clear(u); PrintList(u); ReadLn; End. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 2:35 |