Delphi. Вопросы по курсовой.
1. Тип списка: двусвязный линейный список
2. Метод сортировки:
2.1 массива: пузырьковая
2.2 списка: пузырьковая с заменой указателей
3. Структура данных для поиска и метод поиска: Поиск в списке
4. Направлеине поиска в двусвязном списке: поиск в обратном направлении
5. Тип файла и структура данных для сортировки:
5.1 тип файла: двоичный
5.2 структура данных: массив
Препод толком ничего не говорит.
С сортировками я ещё разберусь, а вот первый, третий и четвёртый вопрос в ступор вводят. В виде чего мне всё это реализовать? Буду рад любому материалу, который пригодится при написании программы (ссылки\куски исходников\советы).
3. Поиск в списке - это поиск в списке. От головы к хвосту.
4. Поиск в обратном направлении - это когда ищем от хвоста к голове (просто, не так ли?)
Да, еще к курсовой должен быть общий для всех кусок. То что вы приводите - лишь ваш вариант. Приведёте общий кусок - возможно станет понятнее.
3. Поиск в списке - это поиск в списке. От головы к хвосту.
4. Поиск в обратном направлении - это когда ищем от хвоста к голове (просто, не так ли?)
Да, еще к курсовой должен быть общий для всех кусок. То что вы приводите - лишь ваш вариант. Приведёте общий кусок - возможно станет понятнее.
По поводу общего куска - ничего подобного в наших курсовых работах нет. Каждому студенту дано конкретное задание, на листочке напечатано :)
Я лично вижу реализацию данной курсовой программы в виде отдельных форм, т.е. каждый пункт - отдельная форма, итого 5 форм.
Возможно в методичке, которую преподаватель ещё не дописал :D , что-то и будет по поводу задач, но пока что это только плод моего воображения. И я начал уже выполнять её в таком виде, как описал выше.
За помощь спасибо, буду ковыряться.
Не могу разобраться, что такое вообще двусвязный линейный список? Что он из себя представляет? Каким компонентом его можно реализовать? Где можно почитать об этом? И как оно визуально выглядит?
Но этого мало, чтобы понять и тем более реализовать в дельфях...
Т.е. поиск можно реализовать с помощью компонента FindDialog? А список в RichEdit, Memo например?
- Это способ представления структурированных данных в памяти (в противовес, например, массиву).
- Связанные парой указателей записи, элементами которых являются как раз эта пара указателей + полезная нагрузка (пользовательские поля).
- Преподаватель потребует собственную реализацию. Нет компонентов реализующих двухсвязный список.
- Читать в любой нормальной книге. В статьях по структурам данных для начинающих. Чтобы не быть голословным, пример: "Бакнелл Джулиан. Фундаментальные алгоритмы и структуры данных в Delphi".
- Визуально он не выглядит. Как по-вашему визуально выглядит переменная? В виде "ящичка" с числом? Тогда список в виде набора бааальших ящичков с двумя стрелками из каждого.
Необходимо отсортировать массив методом отбора (линейная сортировка).
Вот, накидал процедуру
var i,j:integer;
begin
for i:=1 to 20 do
for j:=i+1 to 20 do begin
if mas[j]<mas then
begin
n:=mas[j];
mas[j]:=mas;
mas:=n;
end;
end;
end;
и для кнопки код
var i:integer;
begin
otbor(Spisok);
n:=spinedit1.Value;
StringGrid2.ColCount:=n;
for i:=1 to n do
StringGrid2.Cells[i-1,0]:=inttostr(Spisok);
showmessage('Массив отсортирован!');
end;
Генерирую массив и нажимаю отсортировать. Выпадают одни нули. Если снова сгенерировать и отсортировать, то всё в порядке. В чём дело может быть? Может какая-то ошибка?
Всмысле? У меня есть на форме два Stringgrid'а, две кнопки. Одна генерирует массив в первый стриннгрид, т.е. я вижу, что он сгенерирован, а вторая сортирует и вносит во второй стринггрид отсортированные данные.
С сортировкой по убыванию всё в порядке, а вот по возрастанию такая ерунда.
Хочу вернуться к спискам.
Допустим есть список
PList = ^TList;
TList = record
Prev : PList;
Value : Byte;
Next : PList;
end;
...
procedure PushToBack(var Head : PList;var Tail :PList; dec : byte);
var NewPtr : PList;
begin
New(NewPtr);
NewPtr^.Value:=dec;
NewPtr^.next := nil;
NewPtr^.prev := nil;
if Head=nil then begin
Head:=NewPtr;
Tail:=NewPtr;
end
else begin
Tail^.Next:=NewPtr;
NewPtr^.Prev:=Tail;
Tail:=NewPtr;
end;
end;
Но что с ним дальше то делать? Какие действия с ним можно совершать? Какие можно к этому компоненты использовать? Вобщем как всё это визуализировать? Всё таки что-то же должен этот код делать...
Подскажите пожалуйста, перерыл кучу статей, исходников, ничего не пойму.
Хотя бы какие-то примитивные действия...
У вас наблюдается полное отсутствие представления о предмете курсовой..
Списки совсем не сложно понять, особенно когда их нарисуешь.