|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
удалить однозначные числа из односвязного списка
доброго времени суток. подскажите, как можно удалить все однозначные числа из односвязного списка.
|
#2
|
||||
|
||||
Проходишь по всему списку, каждый элемент списка сравниваешь с 10. Если меньше 10 - удаляешь. Если нужны алгоритмы обхода списка и удаления из него - в гугл.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Bargest спасибо.
помогите найти ошибку в функции. после её выполнения список не выводится. Код:
Procedure Double_pol(top:p_list); // дублирует пониндромы Function pal(x:integer):boolean; var l,d,i:integer; s:string; begin pal:=true; str(x,s); d := length(s); If d=1 then begin result:=false; exit end; l := d div 2; for i := 1 to l do if s[i] <> s[d+1-i] then pal := false; end; var p1,q:p_list; begin p1:=top; while p1^.next<>top do begin if pal(p1^.num) then begin new(q); q^.num:=p1^.num; q^.next:=p1^.next; p1^.next:=q; p1:=p1^.next; end; p1:=p1^.next; end; end; |
#4
|
|||
|
|||
Есть подозрение, что она либо падает, либо уходит в бесконечный цикл (если список не циклический):
Вот это: Код:
while p1^.next<>top do begin должно быть: Код:
while p1^.next<>nil do begin |
#5
|
|||
|
|||
Imikle спасибо! функция теперь работает.
помогите, не могу разобраться теперь с этой процедурой. проблема аналогична - после её выполнения список не выводится. Код:
Procedure del_one_dig_num(top:p_list); //удаляет однозначные числа из последовательности Procedure del(adr:p_list); var z:p_list; begin if adr<>top then begin z:=top; while z^.next<>adr do z:=z^.next; end; if adr=top then top:=top^.next else z^.next:=adr^.next; dispose(adr); end; var p:p_list; begin p:=top^.next; del(p); while p^.next<>nil do begin if (p^.num < 10) and (p^.num > -10) then del(p); p:=p^.next; end; end; |
#6
|
|||
|
|||
посмотрите, что не так, я целыйый день не могу найти.
|