|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Динамические структуры (Очередь)
Запутался с синтаксисом не могу осилить, может кто подсказать?
Код:
type link=^elem; elem=record val:integer; val1:string; next:link end; var L:link; Form1: TForm1; implementation {$R *.dfm} ------------------------- procedure TForm1.Button10Click(Sender: TObject); var p,q:link; f:textfile; begin assignfile(f,'File2.txt'); reset(f); new(L); readln(f,L.val1); p:=L; While not EOF(f) do begin new(q); readln(f,q.val1); p.next:=q; p:=q; end; p.next:=nil; CloseFile(f); ShowMessage('Очередь создана'); end; procedure TForm1.Button11Click(Sender: TObject); var p:link; begin Label8.Caption:=''; p:=L; While p<>nil do begin Label8.Caption:=Label8.Caption+p.val1+' '+#13; p:=p.next; end; end; ---Вся проблема здесь--- procedure TForm1.Button12Click(Sender: TObject); var z,q:link; n,i:integer; begin z:=L.next; L.next:=z.next; dispose(z) end; end. Удаление сделал, но только следующего элемента в очереди, а надо что бы удаляла запращиваемый, например в LabeledEdit ввёл 4 он удалил 4-й элемент из очереди... Пробовал по разному в итоге либо прога висла, либо не шагала до N-го элемента, либо в ошибку вылетала...запутался уже с ними... Может кто с этим знаком подскажите куда копать и как синтаксис представить. Пробовал с While - очень всё плохо, c For - что-то етсь, но ошибко-ошибко! Последний раз редактировалось Admin, 09.05.2010 в 17:28. |
#2
|
||||
|
||||
ну работать не будет, изначально ошибка ибо запись(record) при сохранение и чтении файл должны быть статической длины, а у тебя string, в следствии чего сохраняется и загружается указатель, а не текст. да и тип textfile не подходит для записей.
Arrrgh |
#3
|
|||
|
|||
Эм!О_о
если сделать эту кнопку: ---Вся проблема здесь--- Код:
procedure TForm1.Button12Click(Sender: TObject); var z,q:link; n,i:integer; begin z:=L.next; L.next:=z.next; dispose(z) end; Не получается организовать это с вводом номера элемента, пример: вот список: -------- wer sdf sdg asdf xcv --------- 5-ть элементов, вводим 3, удаляется "sdg" Не получается сделать цикл и заставить правильно прошагать...( |
#4
|
||||
|
||||
да и next:link - это в принципе не имеет постоянный адрес так как является указателем.
Arrrgh |
#5
|
|||
|
|||
Цитата:
Код:
z:=L.next; For i:=1 to n-1 do begin L.next:=z.next; end; ShowMessage(z.val1); И как мне сделать то с этим удалением...требуют по учёбе... |
#6
|
|||
|
|||
А что ты хочешь-то сделать? словами напиши...
|
#7
|
||||
|
||||
ну так я что то тормознул, забудь что выше писал
сохрани указатель на первый элемент и от него считай Arrrgh |