Помощь - Поиск - Пользователи - Календарь
Полная версия: как записать предпоследний элемент списка (очереди) в ячейку?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
taorange
есть очередь, состоящая из целых чисел
pend - последний элемент
u - вспомогательный элемент
next - указатель на след. элемент
data - содержимое элемента

подскажите, как мне записать в ячейку содержимое предпоследнего элемента?
нужно делать через
if u^.next=pend then b:=u^.data; (так не работает, в a всегда ноль записывается) или как?

полный код программы в документе txt прилагается. ошибка в конце, при записи предпоследнего элемента в ячейку
volvo
Цитата
как мне записать в ячейку содержимое предпоследнего элемента?
Пробежаться по всей очереди, с самого начала, и найти тот элемент, у которого u^.next = pend. То, что ты делаешь - не имеет смысла, потому как U указывает на последний элемент очереди (ты же с помощью U добавляешь к очереди элемент, правда? И больше ничего и нигде в U не присваиваешь. Так что там хранится?)

Цитата
if u^.next=pend then b:=u^.data; (так не работает
Правильно. Потому что это условие ни разу не выполняется. Не веришь? Проверяй:
if u^.next=pend then begin
  writeln('Переменная b теперь содержит нужное значение');
  b:=u^.data;
end;

Запусти и убедись, что никакой строки не печатается... smile.gif
taorange
Цитата(volvo @ 27.05.2010 23:20) *

Пробежаться по всей очереди, с самого начала, и найти тот элемент, у которого u^.next = pend. То, что ты делаешь - не имеет смысла, потому как U указывает на последний элемент очереди (ты же с помощью U добавляешь к очереди элемент, правда? И больше ничего и нигде в U не присваиваешь. Так что там хранится?)

спасибо) а как считывать последовательно все элементы очереди и выбрать нужный? я пока не очень понимаю
мне нужно посчитать сумму последних 2х элементов. с последним-то всё просто, а вот с предпоследним проблемы
volvo
Цитата
а как считывать последовательно все элементы очереди и выбрать нужный?
Ну, ты же как-то прошла по всей очереди и напечатала ее полностью? Так же и просмотреть все элементы...

Кстати, при этом ты совершила ошибку, надо было не изменять указатель pbegin, а скопировать его значение в другую переменную и изменять ее. А у тебя после печати содержимого указатель на первый элемент потерян, обратиться к началу списка невозможно...
taorange
Цитата(volvo @ 28.05.2010 0:17) *

Ну, ты же как-то прошла по всей очереди и напечатала ее полностью? Так же и просмотреть все элементы...

Кстати, при этом ты совершила ошибку, надо было не изменять указатель pbegin, а скопировать его значение в другую переменную и изменять ее. А у тебя после печати содержимого указатель на первый элемент потерян, обратиться к началу списка невозможно...

спасибо, я исправила)
теперь всё работает, правда я не уверена, что грамотно (spisok2.txt)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.