Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 871

/ вопрос открыт /

Приветствую, уважаемые эксперты!
Помогите пожалуйста! Есть программа, которая в стеке нужный нам элемент помещает в конец стека, а нужно В НАЧАЛО!!! Что нужно исправить?

Приложение:
  1. uses crt;
  2.  
  3. Type
  4. EXST = ^T;
  5. T = record
  6. Data : integer;
  7. Next : EXST;
  8. end;
  9. Var
  10.  
  11.  
  12. procedure vivod(var s:EXST {n:integer});
  13.  
  14. begin
  15.  
  16. while s<>nil
  17. do begin
  18. writeln(S^.data);
  19. S:=S^.next;
  20. end;
  21. end;
  22.  
  23. Procedure writeStack(Var u : EXST; Slovo : integer);
  24. Var
  25. x : EXST;
  26. Begin
  27. new(x);
  28. x^.Data := Slovo;
  29. x^.Next := u;
  30. u := x;
  31. End;
  32.  
  33. Procedure f( var head:EXST; del:integer);
  34. var prev,s,s1:EXST;
  35. begin
  36. s:=head;
  37. while (s^.data<>del) and (s^.next<>nil) do s:=s^.next;
  38. if s^.data=del then
  39. begin
  40. new(s1);
  41. if head=nil then begin
  42.  
  43. end;
  44. if s=head then head:=s^.next else
  45. if s=head^.next then head^.next:=s^.next else
  46. begin
  47. prev:=head^.next;
  48. while (prev^.next<>S) and (prev^.next<>nil) do prev:=prev^.next;
  49. if prev^.next=nil then begin
  50.  
  51. end;
  52. prev^.next:=S^.next;
  53. end;
  54.  
  55.  
  56. s1^.data:=del;
  57. s1^.next:=head;
  58. head:=s1;
  59.  
  60.  
  61. Dispose(s);
  62. end
  63. else
  64. head:=head;
  65. end;
  66.  
  67. begin
  68. writeStack(stack1,3);
  69. writeStack(stack1,9);
  70. writeStack(stack1,5);
  71. writeStack(stack1,11);
  72. writeStack(stack1,6);
  73. writeStack(stack1,7);
  74. writeStack(stack1,6);
  75. writeStack(stack1,7);
  76. writeStack(stack1,7);
  77.  
  78. f(stack1,6);
  79. vivod(stack1);
  80. end.
  81.  


Иринчик Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Иринчик (статус: Посетитель)
Вопрос отправлен: 29 декабря 2010, 19:35
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: amigo

Здравствуйте, Иринчик!
в процедуре WriteStack подправить малясь

procedure WriteStack( var u:EXST; Slovo:Integer);
 var
  oldhead:EXST;
 begin
  oldhead:=u;
  new(u);
  u^.Data:=Slovo;
  u^.next:=oldhead;
 end;

Ответ отправил: amigo (статус: 1-ый класс)
Время отправки: 29 декабря 2010, 19:59


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 30 декабря 2010, 08:10; участников в обсуждении: 2.
amigo

amigo (статус: 1-ый класс), 29 декабря 2010, 20:10 [#1]:

Кстати больше на список похоже че мна стэк, стэк лучше с пом. массива реализовывать. Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. — Структуры данных и алгоритмы, рекомендую почитать, там много АТД, начиная со списков и кончая хэш-таблицами
min@y™

min@y™ (статус: Доктор наук), 30 декабря 2010, 08:10 [#2]:

Я ж тебе написал прогу по стекам, неужели не понравилась?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.02 сек.