Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Листинг 8.4. Добавление элемента в начало динамического списка

Читайте также:
  1. A. Повышение гидродинамического давления
  2. II ОЗНАМЕНОВАТЕЛЬНОЕ И ПРЕОБРАЗОВАТЕЛЬНОЕ НАЧАЛО ТВОРЧЕСТВА
  3. XXIV/ Предпосылки и начало Смутного времени. Лжедмитрий I.
  4. А) острое начало
  5. А)Определители 2-го,3-го и п-го порядков (определения и из св-ва). б)Теорема Лапласа о разложении определителя по элементам строки или столбца.
  6. Анамнеза заболевания: начало заболевания в 38 лет, отсутствие явных клинических симптомов без выраженной динамики, и осложнений в виде кетоацидотической комы.
  7. Античная философия периода расцвета. Демокрит, Платон, Аристотель. Начало формирования философских концепций права.
  8. Античнаяфилософия:этапы развития, их особенности начало 6 в до н.э.-6 векн. э.
  9. Аристократическое начало культуры и судьба интеллектуального слоя. Суд над христианством и искание новой духовности
  10. Б. Начало войны. Поражение под Нарвой

unit dlist1_;

Interface

Uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit; // фамилия

Edit2: TEdit; // имя

Button1: TButton; // кнопка Добавить

Button2: TButton; // кнопка Показать

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

private { Private declarations }

public { Public declarations }

end;

var Form1: TForm1;

Implementation

{$R *.DFM)

Type

TPStudent=^TStudent; // указатель на тип TStudent

TStudent = record

f_name: string [20]; // фамилия

l_name: string [20]; // имя

next: TPStudent; // следующий элемент списка

end;

var head: TPStudent; // начало (голова) списка

// добавить элемент в начало списка

procedure TForml.Button1Click(Sender: TObject);

var curr: TPStudent; // новый элемент списка

Begin

new(curr); // выделить память для элемента списка

curr^.f_name:= Edit1.Text;

curr^.l_nаmе:= Edit2.Text;

// добавление в начало списка

curr^.next:= head; head:= curr;

// очистить поля ввода

Edit1.text:=''; Edit2.text: ='';

end;

// вывести список

procedure TForml.Button2Click(Sender: TObject);

Var

curr: TPStudent; // текущий элемент списка

n:integer; // длина (кол-во элементов) списка

st:string; // строковое представление списка

begin n:= 0; st:= '';

curr:= head; // указатель на первый элемент списка

While curr <> NIL do begin

n:= n + 1;

st:= st + curr^.f_name + ' ' + curr^.l_name

+#13; curr:= curr^.next; // указатель на следующий элемент

end;

if n <> 0 then ShowMessage('Список:' + #13 + st)

else ShowMessage('В списке нет элементов.');

end;

End.

Добавление элемента в список выполняет процедура TForm1.Button1Click, которая создает динамическую переменную-запись, присваивает ее полям значения, соответствующие содержимому полей ввода диалогового окна, и корректирует значение указателя head.

Вывод списка выполняет процедура TForm1.Button2Click, которая запускается нажатием кнопки Показать. Для доступа к элементам списка используется указатель curr. Сначала он содержит адрес первого элемента списка. После того как первый элемент списка будет обработан, указателю curr присваивается значение поля next той записи, на которую указывает curr. В результате этого переменная curr содержит адрес второго элемента списка. Таким образом, указатель перемещается по списку. Процесс повторяется до тех пор, пока значение поля next текущего элемента списка (элемента, адрес которого содержит переменная curr) не окажется равно NIL.




Дата добавления: 2015-02-16; просмотров: 21 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав