IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Нужна помощ с однонаправленным списком
Krjuger
сообщение 12.05.2009 14:41
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


В общем задача заключается в том чтобы после елемента списока P1,с ключем Х,равным задаваемому значению А,вставить список P2.


Type
 TElem = string;      

 TList = ^TNode;      
 TNode = record       
	 Info: TElem;  
	 Next: TList   
	 end;
var
 P1,P2:TList;
 r:TList;
 A:integer;

Procedure Insert(var P1: Tlist; x : integer);
  begin
  new(r);
  r^.info:=x;
  r^.next:=P1^.next;
  P1^.next:=r;
 end; 


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

Так же есть вопрос немного в другой области.Необходимо взять из конца дека V элементов и вставить их в стек,вот тут приветствуются лбые идеи,потому что своих совсем нет(((
P.s.Просьба на фак не тыкать прочитал и не один,но если есть конкретные вещи из фака ,тобуду только рад.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Krjuger
сообщение 12.05.2009 17:49
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +



Program laba9;
Type

 point = ^item;       
 item = record        
	 Number: integer; 
	 Next: point;  
 end;
var
 P1,P2: pointer;
 A:integer;

Procedure SeachAndInsert(P1,P2: point ; x : integer ; var q : point);
 var
  flag : boolean;
  save:Point;
 begin
  flag:=true;
  while (P1<>nil) and flag=true do
  begin
   if P1^.number=x then
    begin
    flag:=false;
    save^.next:=P1^.next;
    end
   else
    begin
     P1:=P1^.next;
    end;
  end;
   P1^.next:=P2;
   while P2^.next<> nil do
   P1:=P2^.next;
   P1^.next:=save^.next;
 end;


Ну вроде как то так получилось,но все равно не работает.



procedure BListPrint(var P1 : pointer );
begin
 write('< ');
 while P1 <> nil DO
 begin
  write( P1^.number );
  If P1^.Next <> nil then write(',');
  P1 := P1^.Next
 end;
 writeln(' >')
end;


Тут Invalid qualifier в строке write( P1^.number );хз че сделать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 23.07.2025 12:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"