![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
DimaD |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Подскажите как можно удалить из списка элемент под определенным номером.
|
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
DimaD |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Если следует удалить элемент на который указывается ссылка q, то следует в начале присвоить элементу q^ значение следующего за ним элемента, а затем этот элемент удалить.
{удаление элемента q^}
Procedure Delete(Var q: point);
Var r: point;
Begin
r:=q^.next;
q^:=r^;
r^.Next:=nil;
End;
Как задается q? |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Там же, откуда ты взял реализацию Delete, есть процедура Search... С ее помощью находим Q, и передаем Q в Delete для удаления...
|
DimaD |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Реальное имя: Дмитрий Репутация: ![]() ![]() ![]() |
Как подключить эти две процедуры. Помогите. Мне надо чтобы удалялся 3 элемент списка. И выводился список уже без 3 элемента.
{удаление элемента q^}
Procedure Delete(Var q: point);
Var r: point;
Begin
r:=q^.next;
q^:=r^;
r^.Next:=nil;
End;
и
Procedure Search (first: point; x: integer; var q: point);
{ q - возвращает указатель на найденный элемент; q - nil, если элемента с ключем х в списке нет }
var
r: point;
ok: boolean;
begin
r: = first;
ok: = true;
while (r<>nil) and ok do if r^.Number=x then ok:=false else r:=r^.Next;
q: = r
end;
Вот моя программа:
type
B=^Zapis; {Описание типа список}
Zapis=record
St: String[10];
Next: B;
end;
var
i,n: Integer;
q: B;
First, Tail,Curr: B;
begin {Начало исполняемой части программы}
repeat
Write('Vvedite n>2. n = '); {Ввод с клавиатуры количества}
Readln(n); {элементов в списке}
until n>2;
New(First); {Выдиление памяти под первый элемент}
First^.Next:=Nil; {Внесение информации в первый элемент}
Writeln('Vvedite stroky:');
Readln(First^.St);
Tail:=First;
for i:=2 to n do {Цикл добавление элемента в конец списка}
begin
New(Curr);
Tail^.Next:=Curr;
Tail:=Tail^.Next;
Tail^.Next:=Nil;
Readln(Tail^.St);
end; {Список сформирован}
Writeln ('Spisok:');
Curr:=First;
while Curr<>Nil do {Вывод исходного списка}
begin
Writeln (Curr^.St);
Curr:=Curr^.Next;
end; {Конец вывода исходного списка}
Readln;
Readln;
end.
Заранее огромное спасибо. |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Мне надо чтобы удалялся 3 элемент списка. Тогда вот так: Curr := First; i := 3;
While (Curr <> nil) and (i > 1) Do Begin
Dec(i); Curr := Curr^.Next;
End;
If (i = 1) and (Curr <> nil) Then Delete(Curr);
|
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 14:52 |