Линейный двунаправленный список

Применение линейных списков в приложениях, построение на их основе стеков, очередей и дек. Алгоритм создания линейного двунаправленного списка. Элементы списка. Связное представление данных в памяти. Машинное представление связных линейных списков.

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 21.03.2018
Размер файла 305,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

31

Размещено на http://www.allbest.ru/

Министерство Образования и Науки Украины

Харьковский Государственный Технический Университет

Строительства и Архитектуры

Кафедра компьютерного моделирования и информационных технологий

Пояснительная записка к курсовому проекту

Тема: "Линейный двунаправленный список"

Выполнила: ст. гр. ЭКБ-21

Хозяенова Юлия

Проверил: Литвиненко Е.Н.

Харьков 2011

Содержание

  • Введение
  • Раздел 1. Предметная область
  • 1.1 Постановка задачи
  • Раздел 2. Теоретическая часть
  • 2.1 Связное представление данных в памяти
  • 2.2 Связные линейные списки
  • 2.3 Машинное представление связных линейных списков
  • Раздел 3. Практическая часть
  • 3.1 Техническое задание
  • 3.1.1 Основание для разработки
  • 3.1.2 Интерфейс
  • 3.1.3 Минимальные системные требования
  • 3.1.4 Требования к защите
  • 3.1.5 Тестирование программы
  • 3.1.6 Требования к продуктивности
  • 3.1.7 Требования к мобильности
  • 3.1.8 Требования к надежности
  • 3.2 Описание программы
  • 3.3 Использование программы
  • Заключение
  • Список использованной литературы
  • Приложения

Введение

Линейные списки находят широкое применение в приложениях, где непредсказуемы требования на размер памяти, необходимой для хранения данных; большое число сложных операций над данными, особенно включений и исключений. На базе линейных списков могут строится стеки, очереди и деки.

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

линейный двунаправленный список память

Раздел 1. Предметная область

1.1 Постановка задачи

Создать линейный двунаправленный список.

Элемент списка - квартира:

1. адрес;

2. количество комнат;

3. количество жильцов;

4. общая площадь;

5. жилая площадь.

Осуществить поиск по:

1. количеству комнат;

2. общей площади;

3. жилой площади.

1.2 Актуальность создания программы

Актуальность создания данной программы заключается в следующем:

a) можно составить базу данных содержащую сведенья о квартирах;

b) можно исправить уже имеющиеся базу данных;

c) можно просмотреть все сведенья о квартирах содержащихся в базе данных;

d) можно осуществить поиск квартиры по заданным параметрам.

Раздел 2. Теоретическая часть

2.1 Связное представление данных в памяти

Динамические структуры по определению характеризуются отсутствием физической смежности элементов структуры в памяти непостоянством и непредсказуемостью размера (числа элементов) структуры в процессе ее обработки. В этом разделе рассмотрены особенности динамических структур, определяемые их первым характерным свойством. Особенности, связанные со вторым свойством рассматриваются в последнем разделе данной главы.

Поскольку элементы динамической структуры располагаются по непредсказуемым адресам памяти, адрес элемента такой структуры не может быть вычислен из адреса начального или предыдущего элемента. Для установления связи между элементами динамической структуры используются указатели, через которые устанавливаются явные связи между элементами. Такое представление данных в памяти называется связным. Элемент динамической структуры состоит из двух полей:

1. информационного поля или поля данных, в котором содержатся те данные, ради которых и создается структура; в общем случае информационное поле само является интегрированной структурой - вектором, массивом, записью и т.п.;

2. поле связок, в котором содержатся один или несколько указателей, связывающий данный элемент с другими элементами структуры.

Когда связное представление данных используется для решения прикладной задачи, для конечного пользователя "видимым" делается только содержимое информационного поля, а поле связок используется только программистом-разработчиком.

Достоинства связного представления данных - в возможности обеспечения значительной изменчивости структур;

1. размер структуры ограничивается только доступным объемом машинной памяти;

2. при изменении логической последовательности элементов структуры требуется не перемещение данных в памяти, а только коррекция указателей.

Вместе с тем связное представление не лишено и недостатков, основные из которых:

1. работа с указателями требует, как правило, более высокой квалификации от программиста;

2. на поля связок расходуется дополнительная память;

3. доступ к элементам связной структуры может быть менее эффективным по времени.

Последний недостаток является наиболее серьезным и именно им ограничивается применимость связного представления данных. Если в смежном представлении данных для вычисления адреса любого элемента нам во всех случаях достаточно было номера элемента и информации, содержащейся в дескрипторе структуры, то для связного представления адрес элемента не может быть вычислен из исходных данных. Дескриптор связной структуры содержит один или несколько указателей, позволяющих войти в структуру, далее поиск требуемого элемента выполняется следованием по цепочке указателей от элемента к элементу. Поэтому связное представление практически никогда не применяется в задачах, где логическая структура данных имеет вид вектора или массива - с доступом по номеру элемента, но часто применяется в задачах, где логическая структура требует другой исходной информации доступа (таблицы, списки, деревья и т.д.).

2.2 Связные линейные списки

Списком называется упорядоченное множество, состоящее из переменного числа элементов, к которым применимы операции включения, исключения. Список, отражающий отношения соседства между элементами, называется линейным. Если ограничения на длину списка не допускаются, то список представляется в памяти в виде связной структуры. Линейные связные списки являются простейшими динамическими структурами данных.

Графически связи в списках удобно изображать с помощью стрелок. Если компонента не связана ни с какой другой, то в поле указателя записывают значение, не указывающее ни на какой элемент. Такая ссылка обозначается специальным именем - "nil".

2.3 Машинное представление связных линейных списков

На рис.2.1 приведена структура односвязного списка. На нем поле INF - информационное поле, данные, NEXT - указатель на следующий элемент списка. Каждый список должен иметь особый элемент, называемый указателем начала списка или головой списка, который обычно по формату отличен от остальных элементов. В поле указателя последнего элемента списка находится специальный признак nil, свидетельствующий о конце списка.

Рис. 2.1 Структура односвязного списка

Однако, обработка односвязного списка не всегда удобна, так как отсутствует возможность продвижения в противоположную сторону. Такую возможность обеспечивает двухсвязный список, каждый элемент которого содержит два указателя: на следующий и предыдущий элементы списка. Структура линейного двухсвязного списка приведена на рис.2.2, где поле NEXT - указатель на следующий элемент, поле PREV - указатель на предыдущий элемент. В крайних элементах соответствующие указатели должны содержать nil, как и показано на рис.2.2.

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

Рис. 2.2 Структура двухсвязного списка

Разновидностью рассмотренных видов линейных списков является кольцевой список, который может быть организован на основе как односвязного, так и двухсвязного списков. При этом в односвязном списке указатель последнего элемента должен указывать на первый элемент; в двухсвязном списке в первом и последнем элементах соответствующие указатели переопределяются, как показано на рис.2.3.

При работе с такими списками несколько упрощаются некоторые процедуры, выполняемые над списком. Однако, при просмотре такого списка следует принять некоторых мер предосторожности, чтобы не попасть в бесконечный цикл.

Рис. 2.3 Структура кольцевого двухсвязного списка

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

Раздел 3. Практическая часть

3.1 Техническое задание

3.1.1 Основание для разработки

Основанием для разработки является задние курсовой работы по информатике и компьютерным технологиям.

3.1.2 Интерфейс

Данная программа предназначена для работы в ОС Windows 95 и выше. Она представляет собой один автономный "exe" файл.

3.1.3 Минимальные системные требования

Процессор: IBM-совместимый 100 МГц;

Оперативная память: 32 Mb;

Дисковое пространство: 1 Mb + 200 Mb для нормального функционирования ОС;

Видео адаптер: S3 Trio3D 4 Mb;

Устройства ввода-вывода.

3.1.4 Требования к защите

Данная программа не защищена паролем, так как предназначена для общего пользования.

3.1.5 Тестирование программы

Тестирование программы проводилось в нормальных и критических условиях.

3.1.6 Требования к продуктивности

Программа должна выдавать результаты сразу после выполнения соответствующего действия пользователем, час ответа должен быть <=1 секунде.

3.1.7 Требования к мобильности

Данная программа представляет собой один автономный "exe" файл и работает на всех компьютерах с требованиями указанными в п. п.3.1.2 и 3.1.3

3.1.8 Требования к надежности

При выявлении каких-либо ошибок в данной программе обращаться к разработчику данного продукта.

3.2 Описание программы

Данная программа была написано на языке Borland Pascal в реализации Borland Delphi 7.0. Она состоит из одной формы на которой имеется 3 вкладки: "Ввод данных о квартире" (Рис.1 пр. №2), "Просмотр данных о квартире" (Рис.2 пр. №2) и "Поиск заданной квартиры" (Рис.3 пр. №2).

На первой вкладке "Ввод данных о квартире" находятся:

1. кнопки: "Открыть список", "Сохранить список" и "Записать";

2. окна для ввода информации о квартире: "Адрес", "Кол-во комнат", "Кол-во жильцов", "Общая площадь" и "Жилая площадь";

3. таблица в которой мы можем наблюдать занесенные элементы.

На второй вкладке "Просмотр данных о квартире" находятся:

1. кнопка для открытия файла;

2. таблица для просмотра открытого (текущего) файла

На третьей вкладке "Поиск заданной квартиры" находятся:

1. кнопки предназначенные для поиска: "По кол-ву комнат", "По общей площади" и "По жилой площади";

2. таблица для просмотра данных поиска.

Также в низу формы находится кнопка "Выход".

3.3 Использование программы

Для запуска программы необходимо активировать файл Apartment. exe. После чего на экране появится окно программы как показано на рис.1 (пр. №2).

Для того чтобы создать список элементов (сведенья о квартире) необходимо заполнить окна ввода информацией и нажать на кнопку "Записать". После чего в таблицу сразу занесется информация о квартире которую мы только что внесли. Записывать в список можно сколько угодно элементов. После того как все элементы внесены в список можно его сохранить нажав на кнопку "Сохранить список".

Если у вас какой-то элемент лишний в списке то его можно легко удалить. Для этого следует лишь нажать левое клавишей мыши на нужном элементе и щелчком правой - вызвать пункт меню "Удалить". После чего элемент удалится (элемент возврату не подлежит).

Для того чтобы просмотреть список необходимо нажать на кнопку "Открыть список", выбрать необходимый для нас файл с расширением". lbd" и в таблице просмотра, а также и в таблице редактирования мы увидим содержимое этого файла. После того как мы открыли файл, мы можем произвести поиск по интересующим нас элементам.

После окончания работы программу можно закрыть с помощью кнопки "Выход" или нажатием на "Х" в верхнем правом углу окна.

Заключение

В ходе выполнения данной курсовой работы была достигнута поставленная цель - написана программа линейного двунаправленного списка с элементом - квартира. Данная программа была разработана в объектно-ориентированной среде Borland Delphi 7.0 на языке Borland Pascal. Она является универсальной стандартизированной под Windows.

В данной программе использовались подсказки, которые облегчат диалог между компьютером и пользователем, и защитить информацию от неверных действий пользователя.

Список использованной литературы

1. Фаронов В.В. Турбо Паскаль 7.0. - М.: Издательство ООО ОМД "Групп", 2003. - 576 с.

2. Немнюгин Turbo Pascal / С.А. - СПб.: Питер, 2003. - 492 с.

3. Конспект лекций по программированию. / Под ред.Е.Н. Литвиненко.

4. Фленов Михаил „Библия Delphi”

Приложения

Приложение 1

Листинг программы

unit ApartmentUnit;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, ComCtrls, ExtCtrls, StdCtrls, Buttons, Spin, Menus;

type

Ap=^z;

z=record

Adres: string;

KKomn: integer;

KZylcov: integer;

OPlosh: integer;

ZPlosh: integer;

Next: Ap;

Prev: Ap;

end;

FF=record

Adr: string [80];

KKom: integer;

KZylc: integer;

OPlos: integer;

ZPlos: integer;

end;

TForm1 = class (TForm)

PageControl1: TPageControl;

Panel1: TPanel;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

StringGrid1: TStringGrid;

BitBtn1: TBitBtn;

Edit1: TLabeledEdit;

Edit2: TLabeledEdit;

Edit3: TLabeledEdit;

Edit4: TLabeledEdit;

Edit5: TLabeledEdit;

BitBtn2: TBitBtn;

BitBtn3: TBitBtn;

BitBtn4: TBitBtn;

TabSheet3: TTabSheet;

BitBtn5: TBitBtn;

StringGrid2: TStringGrid;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

BitBtn8: TBitBtn;

StringGrid3: TStringGrid;

Panel2: TPanel;

SpinEdit1: TSpinEdit;

BitBtn9: TBitBtn;

BitBtn10: TBitBtn;

Save: TSaveDialog;

Open: TOpenDialog;

PopupMenu1: TPopupMenu;

N1: TMenuItem;

StatusBar1: TStatusBar;

procedure BitBtn6Click (Sender: TObject);

procedure BitBtn2Click (Sender: TObject);

procedure FormActivate (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

procedure BitBtn3Click (Sender: TObject);

procedure Find (k,l: integer);

procedure StrGrClear (NN: integer);

procedure StrGrZap (k,l: integer);

procedure ElementRemove (k: integer);

procedure BitBtn9Click (Sender: TObject);

procedure BitBtn10Click (Sender: TObject);

procedure BitBtn7Click (Sender: TObject);

procedure BitBtn8Click (Sender: TObject);

procedure BitBtn5Click (Sender: TObject);

procedure N1Click (Sender: TObject);

procedure StringGrid1Click (Sender: TObject);

private

n,nend,ntop: Ap;

i,kof1,kof2,Xrow: integer;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *. dfm}

// Поиск по заданым параметрам

procedure TForm1. Find (k,l: integer);

var q: integer;

begin

q: =1;

n: =ntop;

case k of

1:

begin

Repeat

if q<=9 then StringGrid3. RowCount: =q+1;

If n^. KKomn=l then

begin

StrGrZap (q,2);

inc (q);

end;

n: =n^. Next;

until n=nil;

end;

2:

begin

Repeat

if q<=9 then StringGrid3. RowCount: =q+1;

If n^. OPlosh=l then

begin

StrGrZap (q,2);

inc (q);

end;

n: =n^. Next;

until n=nil;

end;

3:

begin

Repeat

if q<=9 then StringGrid3. RowCount: =q+1;

If n^. ZPlosh=l then

begin

StrGrZap (q,2);

inc (q);

end;

n: =n^. Next;

until n=nil;

end;

end;

end;

// Отчистка StringGrid

procedure TForm1. StrGrClear (NN: integer);

var

t,c: integer;

begin

case nn of

1:

for t: =1 to StringGrid1. RowCount do

for c: =0 to 5 do

StringGrid1. Cells [c,t]: ='';

2:

for t: =1 to StringGrid2. RowCount do

for c: =0 to 5 do

StringGrid2. Cells [c,t]: ='';

3:

for t: =1 to StringGrid3. RowCount do

for c: =0 to 5 do

StringGrid3. Cells [c,t]: ='';

end;

end;

// Заполнение StringGrid денамическими переменными

procedure TForm1. StrGrZap (k,l: integer);

begin

case l of

1:

begin

StringGrid1. Cells [0,k]: =IntToStr (k);

StringGrid1. Cells [1,k]: =n^. Adres;

StringGrid1. Cells [2,k]: =IntToStr (n^. KKomn);

StringGrid1. Cells [3,k]: =IntToStr (n^. KZylcov);

StringGrid1. Cells [4,k]: =IntToStr (n^. OPlosh);

StringGrid1. Cells [5,k]: =IntToStr (n^. ZPlosh);

StringGrid2. Cells [0,k]: =IntToStr (k);

StringGrid2. Cells [1,k]: =n^. Adres;

StringGrid2. Cells [2,k]: =IntToStr (n^. KKomn);

StringGrid2. Cells [3,k]: =IntToStr (n^. KZylcov);

StringGrid2. Cells [4,k]: =IntToStr (n^. OPlosh);

StringGrid2. Cells [5,k]: =IntToStr (n^. ZPlosh);

end;

2:

begin

StringGrid3. Cells [0,k]: =IntToStr (k);

StringGrid3. Cells [1,k]: =n^. Adres;

StringGrid3. Cells [2,k]: =IntToStr (n^. KKomn);

StringGrid3. Cells [3,k]: =IntToStr (n^. KZylcov);

StringGrid3. Cells [4,k]: =IntToStr (n^. OPlosh);

StringGrid3. Cells [5,k]: =IntToStr (n^. ZPlosh);

end;

end;

end;

// Удаление элемента из списка

procedure TForm1. ElementRemove (k: integer);

var

l: integer;

begin

l: =1;

n: =ntop;

If k=1 then

begin

n^. Next^. Prev: =nil;

ntop: =n^. Next;

dispose (n);

end else

begin

while (n<>nil) and (l<>k) do

begin

n: =n^. Next;

inc (l);

end;

if n^. Next<>nil then n^. Next^. Prev: =n^. Prev;

if n^. Next=nil then nend: =n^. Prev;

n^. Prev^. Next: =n^. Next;

dispose (n);

end;

// Вывод списка на экран без удаленного элемента

StrGrClear (1);

StrGrClear (2);

n: =ntop;

l: =1;

repeat

StrGrZap (l,1);

inc (l);

n: =n^. Next;

until n=nil;

end;

procedure TForm1. BitBtn6Click (Sender: TObject);

begin

Panel2. Visible: =True;

kof1: =1;

StrGrClear (3);

end;

// Создание списка

procedure TForm1. BitBtn2Click (Sender: TObject);

var

st1: string;

st2,st3,st4,st5: integer;

proverka: boolean;

begin

proverka: =false;

try

st1: =Edit1. Text;

st2: =StrToInt (Edit2. Text);

st3: =StrToInt (Edit3. Text);

st4: =StrToInt (Edit4. Text);

st5: =StrToInt (Edit5. Text);

proverka: =true;

except

Application. MessageBox ('Проверте правильность ввода данных','Ошибка',mb_ok);

end;

if proverka=true then

begin

if i=0 then

begin

inc (i);

new (n);

n^. Next: =nil;

n^. Prev: =nil;

n^. Adres: =st1;

n^. KKomn: =st2;

n^. KZylcov: =st3;

n^. OPlosh: =st4;

n^. ZPlosh: =st5;

ntop: =n;

nend: =n;

end else

begin

if i>=8 then StringGrid1. RowCount: =i+1;

new (n^. Next);

n: =n^. Next;

n^. Adres: =st1;

n^. KKomn: =st2;

n^. KZylcov: =st3;

n^. OPlosh: =st4;

n^. ZPlosh: =st5;

n^. Next: =nil;

n^. Prev: =nend;

nend: =n;

end;

StrGrZap (i,1);

inc (i);

Edit1. Text: ='';

Edit2. Text: ='';

Edit3. Text: ='';

Edit4. Text: ='';

Edit5. Text: ='';

end;

end;

procedure TForm1. FormActivate (Sender: TObject);

begin

i: =0;

StringGrid1. Cells [0,0]: ='№ п/п';

StringGrid1. Cells [1,0]: ='Адрес';

StringGrid1. Cells [2,0]: ='Кол-во комнат';

StringGrid1. Cells [3,0]: ='Кол-во жильцов';

StringGrid1. Cells [4,0]: ='Общая площадь';

StringGrid1. Cells [5,0]: ='Жилая площадь';

StringGrid2. Cells [0,0]: ='№ п/п';

StringGrid2. Cells [1,0]: ='Адрес';

StringGrid2. Cells [2,0]: ='Кол-во комнат';

StringGrid2. Cells [3,0]: ='Кол-во жильцов';

StringGrid2. Cells [4,0]: ='Общая площадь';

StringGrid2. Cells [5,0]: ='Жилая площадь';

StringGrid3. Cells [0,0]: ='№ п/п';

StringGrid3. Cells [1,0]: ='Адрес';

StringGrid3. Cells [2,0]: ='Кол-во комнат';

StringGrid3. Cells [3,0]: ='Кол-во жильцов';

StringGrid3. Cells [4,0]: ='Общая площадь';

StringGrid3. Cells [5,0]: ='Жилая площадь';

PageControl1. TabIndex: =0;

end;

procedure TForm1. BitBtn1Click (Sender: TObject);

begin

Close;

end;

// Сохранение списка

procedure TForm1. BitBtn3Click (Sender: TObject);

var

fa: FF;

f: file of FF;

begin

try

n: =ntop;

if Save. Execute then

begin

AssignFile (f,Save. FileName+'. lbd');

rewrite (f);

repeat

fa. Adr: =n^. Adres;

fa. KKom: =n^. KKomn;

fa. KZylc: =n^. KZylcov;

fa. OPlos: =n^. OPlosh;

fa. ZPlos: =n^. ZPlosh;

write (f,fa);

n: =n^. Next;

until n=nil;

closefile (f);

end;

except

Application. MessageBox ('Невозможно сохранить из-за неверных параметров','Ошибка',mb_ok);

end;

end;

procedure TForm1. BitBtn9Click (Sender: TObject);

begin

kof2: =StrToInt (SpinEdit1. Text);

Find (kof1,kof2);

Panel2. Visible: =False;

end;

procedure TForm1. BitBtn10Click (Sender: TObject);

begin

Panel2. Visible: =False;

end;

procedure TForm1. BitBtn7Click (Sender: TObject);

begin

Panel2. Visible: =True;

kof1: =2;

StrGrClear (3);

end;

procedure TForm1. BitBtn8Click (Sender: TObject);

begin

Panel2. Visible: =True;

kof1: =3;

StrGrClear (3);

end;

// Открытие списка

procedure TForm1. BitBtn5Click (Sender: TObject);

var

fa: FF;

f: file of FF;

begin

i: =0;

StrGrClear (2);

StrGrClear (1);

if open. Execute then

begin

AssignFile (f,open. FileName);

reset (f);

while not eof (f) do

begin

read (f,fa);

if i=0 then

begin

inc (i);

new (n);

n^. Next: =nil;

n^. Prev: =nil;

n^. Adres: =fa. Adr;

n^. KKomn: =fa. KKom;

n^. KZylcov: =fa. KZylc;

n^. OPlosh: =fa. OPlos;

n^. ZPlosh: =fa. ZPlos;

ntop: =n;

nend: =n;

end else

begin

if i>=8 then StringGrid1. RowCount: =i+1;

if i>=14 then StringGrid2. RowCount: =i+1;

new (n^. Next);

n: =n^. Next;

n^. Adres: =fa. Adr;

n^. KKomn: =fa. KKom;

n^. KZylcov: =fa. KZylc;

n^. OPlosh: =fa. OPlos;

n^. ZPlosh: =fa. ZPlos;

n^. Next: =nil;

n^. Prev: =nend;

nend: =n;

end;

StrGrZap (i,1);

inc (i);

end;

end;

end;

procedure TForm1. N1Click (Sender: TObject);

begin

try

ElementRemove (Xrow);

except

Application. MessageBox ('Если хочешь удалить элемент, то клацни на нем мышкой','внимание',mb_ok);

end;

end;

procedure TForm1. StringGrid1Click (Sender: TObject);

begin

Xrow: =StringGrid1. Row;

StatusBar1. SimpleText: ='Строка №'+Inttostr (Xrow) +' готова к удалению';

end;

end.

Приложение 2

Вид программы

Рис. 11-ая вкладка программы

(ввод и редактирование элементов списка)

Рис.2 2-ая вкладка программы

(просмотр списка)

Рис.3 3-я вкладка программы

(поиск элементов)

Размещено на Allbest.ru

...

Подобные документы

  • Написание программы, исходя из конкретных данных. Создание двунаправленного линейного списка. Main - главная программа, содержащая меню. Занесение данных в память списка. Результирующий файл. Значения всех числовых данных из диапазона целого типа данных.

    курсовая работа [2,3 M], добавлен 22.12.2010

  • Представление (построение, создание) списка данных в виде линейного однонаправленного списка. Формирование массива данных. Вывод данных на экран. Алгоритм удаления, перемещения данных. Сортировка методом вставки. Алгоритм загрузки данных из файла.

    курсовая работа [2,1 M], добавлен 16.05.2015

  • Средства выделения и освобождения памяти. Динамические структуры данных. Связные линейные списки и их машинное представление. Структура одно- и двухсвязного списка. Реализация операций над связными линейными списками. Разработка программы на языке С++.

    курсовая работа [944,7 K], добавлен 14.03.2015

  • Выбор алгоритма решения задачи. Разработка программы, обеспечивающую эффективную обработку и хранение информации с использованием линейных списков. Написание программы на псевдокоде и на языке программирования высокого уровня. Результаты работы программы.

    курсовая работа [2,1 M], добавлен 21.04.2012

  • Понятия и методика создания списков и баз данных в Microsoft Excel. Фильтрация списков, виды сортировки данных и структурирования листа. Сортировка с помощью списка автозаполнения и "слева направо". Создание сводки о реализации товара за один день.

    курсовая работа [618,3 K], добавлен 25.04.2013

  • Расположение элементов списка в памяти. Информация о полях структуры TMember. Логическая структура двусвязного кольцевого списка. Логические схемы наиболее важных операций со списками. Алгоритмы обработки основных структур. Руководство пользователя.

    курсовая работа [2,3 M], добавлен 27.08.2012

  • Теоретическое описание линейного списка с алгоритмами реализации основных операций. Понятия, механизмы объектно-ориентированного программирования. Возможности проектируемого контейнера пользователей, его реализация на основе линейного списка с заголовком.

    курсовая работа [475,2 K], добавлен 26.02.2015

  • Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.

    курсовая работа [1,1 M], добавлен 07.01.2014

  • Понятие и обработка списков. Имя домена списка. Примеры записи списков. Основные принципы работы со списками. Рекурсивная программа обработки списка. Определение номера элемента или элемента по номеру. Решение задач, использующих структуру графа.

    презентация [65,0 K], добавлен 29.07.2012

  • Сущность понятий: "куча" (пул памяти), связный список, синхронизация потоков; разработка программы, исключающей возможность перекрытия потоков друг другом. Организация связных списков и использование функций API для работы с пулом памяти в ОС Windows.

    курсовая работа [145,3 K], добавлен 11.05.2012

  • Исследование программного средства для управления базой данных с информацией о фильмах. Составление алгоритма удаления и добавления элемента в указанное место двунаправленного списка. Характеристика поиска, вывода на экран и сортировки элементов списка.

    курсовая работа [94,5 K], добавлен 23.09.2011

  • Операции, осуществляемые с однонаправленными списками. Порядок создания однонаправленного списка, вставка и удаление элементов. Алгоритмы основных операций с двунаправленными списками. Примеры реализации однонаправленных и двунаправленных списков.

    курсовая работа [172,7 K], добавлен 20.01.2016

  • Средства создания динамических структур данных. Формат описания ссылочного типа. Структура памяти во время выполнения программы. Линейные списки, стек, очередь. Организация списков в динамической памяти. Пример создания списка в обратном порядке.

    лабораторная работа [788,2 K], добавлен 14.06.2009

  • Создание стека как линейного списка. Использование аналогичного ссылочного типа для организации очереди. Циклически связанный список. Построение сложных структур в динамической памяти. Бинарные (двоичные) деревья. Экран результата и контрольные расчеты.

    лабораторная работа [398,9 K], добавлен 14.06.2009

  • Требование к структуре данных в базе, описание ее вида, содержание объектов. Используемые форматы данных. Алгоритмы и их особенности. Функциональное описание разработки. Описание пользовательского интерфейса. Контрольные примеры, временные характеристики.

    курсовая работа [1,5 M], добавлен 06.04.2016

  • Стандартные функции для работы с динамической памятью. Представление списков цепочками звеньев. Организация файлового каталога в файловой системе в виде линейного списка на языке Visual C++. Создание блок-схемы и инструкции по работе с программой.

    курсовая работа [252,0 K], добавлен 22.01.2015

  • Изображения древовидной структуры. Десятичная система обозначений Дьюи. Стандартные формы представления деревьев. Представление деревьев с использованием списков, с использованием списков сыновей. Полное бинарное дерево. Основные операции над кучей.

    презентация [495,0 K], добавлен 19.01.2014

  • Создание баз хозяйственных договоров, банков и членов временных трудовых коллективов в среде разработки Delphi. Логическая структура линейного двусвязного списка. Способ упорядочения и алгоритм сортировки списка. Руководство пользования программой.

    курсовая работа [749,4 K], добавлен 14.02.2016

  • Составление алгоритма сортировки линейной вставкой. Понятие однонаправленного циклического списка символов, реализация процедуры подсчета суммы элементов и составление алгоритма. Прямое представление дерева, алгоритм работы с ним на абстрактном уровне.

    контрольная работа [32,8 K], добавлен 20.01.2012

  • Осуществление идентификации элемента внутри массива с помощью индекса (ключа). Понятие и свойства массивов, механизм их инициализации и создания. Недостатки непрерывных списков. Структура связного списка, удаление записи из него и добавление нового имени.

    презентация [868,4 K], добавлен 14.10.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.