| imho.ws |
![]() |
|
|
|
# 1 |
|
Member
Регистрация: 05.08.2003
Сообщения: 290
![]() ![]() ![]() ![]() ![]() |
Проблема написания программки на Borland Pascal
Я должен написать list
этот лист описан в библиотеке list.pas так. --------------------------------------------------------- type pos_type = ^link_type; list_info_type = char; link_type = record info:list_info_type; next os_type;end; list_type = record anchor os_type;end; Хочу щас написать программку использующую эту библиотеку. Пользователь должен вводить место в listе и какой элемент он хочет в list занести Вопрос ------------ Каким образом вводить место в listе если переменная pointer?! Надеюсь не очень загрузил Те кто еще че то помнить из Паааскаля помогите.
__________________
Кончив одно дело, начинай другое. |
|
|
|
|
# 2 |
|
Newbie
Регистрация: 05.02.2004
Адрес: vrn
Сообщения: 37
![]() ![]() ![]() ![]() |
Ты что хочешь вводить указатель?
Восстанавливая в голове, то что было в нее заложено пару-тройку лет назад, могу сказть, что место вставки в список вводилось по информационному полю... в данном случае, типа char. Можно наверное воспользоваться и переменной типа link_type, но опять же полем info. Или я что-то не так поняла и опять сморозила глупость?
__________________
4М - это не память, склероз. |
|
|
|
|
# 3 |
|
Member
Регистрация: 05.08.2003
Сообщения: 290
![]() ![]() ![]() ![]() ![]() |
Да вроде info я ввел.
А вот позицию в listе как ввести? Это ж ведь тоже указатель. А! то есть надо позицию тоже как поле info вводить А если у меня declaration процедуры такой procedure list_insert(var l:list_type; pos os_type; x:list_info_type);
__________________
Кончив одно дело, начинай другое. Последний раз редактировалось LN berf; 25.02.2004 в 19:52. |
|
|
|
|
# 4 | |
|
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
т.е вставить после элемента elem элемент new_val procedure list_insert(var l:list_type; elem:list_info_type; new_val:list_info_type); вставить элемента new_val в месте index procedure list_insert(var l:list_type; index:integer; new_val:list_info_type);
__________________
Столько дел, что и работой занятся некогда... |
|
|
|
|
|
# 5 | |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Во-вторых, вводить в list его не надо, поскольку расположение элементов в списке может меняться, соответственно, невозможно жестко привязать к какому-либо элементу индекс. Таким образом, тебе нужно просто дописать прогу, всавив в нее только процедуру вставки нового элемента в нужную позицию. Кажись это будет выглядеть так (тока я не проверял, у меня нет на машине паскаля): Код:
procedure List_PosItemInsert (var Head: pos_type;
NewItemPos: integer; NewItemCont: list_info_type); far;
var
NewItem: pos_type;
begin
if NewItemPos < 1 then exit;
if (NewItemPos = 1) or (Head = nil) then begin
New (NextItem);
NextItem^.Info := NewItemCont;
NextItem^.Next := Head;
Head := NextItem;
end else begin
NextItem := Head^.Next;
List_PosItemInsert (NextItem, NewItemPos - 1, NewItemCont);
Head^.Next := NextItem;
end;
end;
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|