Школоло / Говнокод #5879 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
procedure delonefromend(var p:TPointer);
var i,n:integer; t:TPointer;
begin
       i:=1;
       t:=p;
       while p<>nil do
               begin
                       t:=t^.next;
                       i:=i+1;
               end;
       for n:=1 to i do p:=p^.next;
       dispose(p^.next);
end;

Для того чтобы добраться до последнего элемента в списке, сначала циклом подсчитывается в i их количество, а потом другим циклом от 1 до I указатель p перемещается на i элементов, тобишь в конец.

Запостил: anigon anigon, (Updated )

Комментарии (46) RSS

  • Студенты некоторых вузов ещё и не такого могут наклепать. Им только PABC дай.
    Ответить
    • PABC это такая кустарная шароварная херня, которую лучше записать на болванку и дать своему любимому шредеру
      Ответить
        • когда-то давно была опция жрат, сейчас вроде халявно или хорошо спрятано
          Ответить
          • проясните терминологию: "опция жрат" - это чё?
            и насчет "давно" - мне даже интересно... я последний раз в делфях работал аж в версии 6 (хотя тогда была и 7), freepascal как проект я помню, а вот про PABC до настоящего времени не слыхал.
            Ответить
            • > "опция жрат"
              был какой-то премиум-швемиум без которого в этой игрушке не было чего-то нужного.

              > "давно"
              < 5 лет назад, точнее не помню, D7 - начало прошлой декады, очевидно, что позже, ибо даже с феноменальной памятью нереально запомнить сведения о беглом взгляде на случайную прожку.

              > freepascal
              то серьезный проект

              кстати, дельфи тоже были халявные когда-то
              Ответить
                • вот это да, и правда "Personal edition of Delphi 7 will be available for free"
                  найти бы табличку сравнения возможностей разных версий Delphi 7 - Architect, Enterprise, Professional, Personal, чисто ради исторического интереса...
                  Ответить
                  • Кстати, я не знаю, какой версией пользуюсь. Всё равно при инсталляции ставлю только минимум+исходники VCL+инструкцию. Чтобы быстрее грузилось.
                    Ответить
                          • > хелпом...

                            На русском языке это называется инструкцией.
                            Ответить
                            • если по-русски, то "помощь" (буквально) или "справка" (вольный перевод), но никак не "инструкция"
                              Ответить
                              • Ты когда телевизор покупаешь, у него в коробке лежит "помощь", "справка" или "инструкция"?
                                Ответить
                                • при чем тут телевизор? обычно там лежит "Руководство по эксплуатации", или "User manual", и смысл такого документа совершенно не тот, что у справочной системы в среде разработки
                                  Ответить
                                  • взял первую попавшуюся от фотика - "user manual", еще есть "owner manual", "instruction manual" - все это переводится как "руководство пользователя", в последнем случае ~ "техническое". "guide" - почти буквально и есть "руководство", от глагола "вести".
                                    а "help" - это помощь, но не инструкция и не руководство.
                                    Ответить
                  • видел в каком-то пдф, но щас не смог вспомнить где 🙁
                    отличие в поддержке RaveReports, Corba(?) и т.д.
                    Сам не юзаю это все, так что по идее хватает Personal.
                    Ответить
                        • судя по табличке, почти всего нет
                          так что хуй с этой Personal, лучше уж Architect нагуглить
                          Ответить
                        • я все-равно юзаю сторониие - sdac, odac. а для firebird - когда-то сами через его апи сделали - в разы быстрее стандартных.
                          А сырцы интересно можно руками в нужные пути положить? Вот тока в лом проверять.
                          Ответить
                • там вроде какая-то подъёбка, толи хер скачаешь, толи ключ не шлется
                  Ответить
                    • дык, варезную-то можно хоть архитект выкачать...
                      речь-то об официальной халяве для личного юзания
                      Ответить
                      • видать, нахяляву "искаропки" есть только возможность покидать на форму стандартные контролы в программах типа "Hello, world!" 🙂
                        Ответить
                        • в Turbo Delphi так было, халявная версия не ставила сторонние, а насчет Delphi 7 Personal я не помню

                          но это всё дѣла давно мiнувших днѣй, в багланде не жадничали и занимались популяризацией среди хоббистов
                          Ответить
                        • на самом деле, в табличке много херни про value-add довески, важное про кодоредактор и багоотладчик, где кастрированные возможности будут мешать работе с большим проектом
                          Ответить
  • аа.... где p^.next := NIL; ?
    я у ж молчу про индусятину с двумя циклами
    Ответить
  • Не, ну а чё, алгоритмическая сложность не изменилась из-за лишнего цикла, работает же, и ладно... Шутка.

    Связные списки должны вообще явно запоминать не только начало и конец, но и последний элемент, к которому было обращение. А то в цштфзш вроде много списков, к которым можно обращаться только по индексу, часто перебирают последовательные индексы.
    Ответить
    • не обязательно - все зависит от задачи.
      а вообще использовать список и обращаться по индексу - как-то странновато.
      Ответить
      • > а вообще использовать список и обращаться по индексу - как-то странновато.

        В цштфзш работа с некоторыми компонентами именно такая.
        Ответить
  • procedure delonefromend(var p:TPointer);

    Прикольно. После
    dispose(p^.next);
    оказались в хвосте списка. Надеюсь список хоть двунаправленный?
    Ответить
    • ха-ха, сразу не заметил 🙁
      может, при вызове голову запоминают? хотя, вряд ли 🙁
      Ответить
  • t:=p;
    while p<>nil do
    begin
    t:=t^.next;
    i:=i+1;
    end;

    этот цикл вечен
    Ответить
      • Если Дельфи - то АВ.
        Если Турбо Паскаль под ДОС - то распидарасить память может нехило.
        Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8