С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/33: Рейтинг темы: голосов - 33, средняя оценка - 4.52
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
1

Двусвязный список

23.05.2009, 19:25. Показов 6733. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста решить такую задачу, у меня мыслей ноль

В заданиях структура "двусвязный список" моделируется цепочкой узлов-записей типа TNode, связанных как с предыдущим, так и с последующим узлом. Поле Next последнего элемента цепочки и поле Prev первого элемента цепочки равны nil. Для доступа к любому элементу двусвязного списка достаточно иметь указатель на один из его элементов, однако для ускорения операций со списком обычно хранят три указателя: на первый элемент списка (first), на его последний элемент (last) и на текущий элемент (current). Для пустого списка все эти указатели полагаются равными nil. Как в случае стека и очереди, значением элемента списка считается значение его поля Data.
Собственно условие задачи: Дан указатель p0 на один из элементов непустого двусвязного списка. Переместить данный элемент в конец списка и вывести указатели на первый и последний элементы преобразованного списка. Операции выделения и освобождения памяти не использовать, поля Data не изменять. Записать все значения списка в файл с именем <double_linked_list_5.txt>

Всем заранее спасибо. Жду помощи.

Добавлено через 12 часов 23 минуты 21 секунду
[*up*]

Добавлено через 9 часов 37 минут 18 секунд
help, очень нужно

Люди!!! неужели никто не знает как её решить? А то мне в понедельник сдавать её надо!

Добавлено через 14 часов 17 минут 24 секунды
ещё нужно. help
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2009, 19:25
Ответы с готовыми решениями:

Двусвязный список
Здравствуйте! В FAQ по динамическим структурам данных есть процедура добавления нового узла...

Двусвязный список
Помогите пожалуйста решить эту задачу :( В заданиях данной подгруппы структура «двусвязный список»...

Двусвязный список
Доброго времени суток. Помогите пожалуйста. Нужно на завтра решить задачу: Дано указатель P1 на...

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

13
93 / 26 / 1
Регистрация: 19.05.2009
Сообщений: 138
25.05.2009, 12:38 2
Вот так надо обьявить "двусвязный список"
Pascal
1
2
3
4
5
6
7
8
9
10
11
type
  list = ^TList;{указатель на тип элемента}
  ^TList = record{тип элемента списка}
    Data: integer;{поле данных элемента}
    Next,   {указатель на следующий элемент}
    Prev: list;       {указатель на предыдующий элемент}
     end;
 
var
  Head: list ;      {указатель на первый элемент списка}
  Current: list ;   {указатель на текущий элемент}
1
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
25.05.2009, 12:52  [ТС] 3
Спасибо, а само решение не подкажите
0
93 / 26 / 1
Регистрация: 19.05.2009
Сообщений: 138
25.05.2009, 12:58 4
Цитата Сообщение от Djek Посмотреть сообщение
Спасибо, а само решение не подкажите
Я сама еще только учу динамические структуры...
а ты сам что уже написал, давай посмотрим, может что-нибудь получится исправить.
0
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
25.05.2009, 21:45  [ТС] 5
Pascal
1
2
3
4
5
6
7
8
9
10
11
Program var5;
type
  Node = ^TNode;
  TNode = record
    Data: integer;
    Next,Prev: Node;
    end;
var
  first: Node;
  last: Node;
  Current: Node;
пока так... и то не знаю правильно или нет...
а ты сам что уже написал, давай посмотрим, может что-нибудь получится исправить.
эх, если бы всё было так хорошо...

Добавлено через 7 часов 47 минут 49 секунд
Помогите плиз!
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
26.05.2009, 01:41 6
Цитата Сообщение от Djek Посмотреть сообщение
эх, если бы всё было так хорошо.
А вы поиском по форуму пользовались ? (Введите в расширенном поиске слово "список" выбрав раздел Pascal там 4-е страницы, есть около 10 тем с полными ответами)
0
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
02.06.2009, 18:12  [ТС] 7
Всё еще нужно
Цитата Сообщение от lexus_ilia Посмотреть сообщение
А вы поиском по форуму пользовались ? (Введите в расширенном поиске слово "список" выбрав раздел Pascal там 4-е страницы, есть около 10 тем с полными ответами)
просмотрел, но если бы я разбирался хоть немного в этом...

прошу помогите! вопрос жизни и смерти
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
02.06.2009, 19:33 8
Цитата Сообщение от Djek Посмотреть сообщение
но если бы я разбирался хоть немного в этом
А Вы думаете те, кто решает Вам задачи родились со своими знаниями? Я тоже много чего не знал, но сидел, пробовал, изучал, читал учебники, лазил по интернету.
Только не надо говорить что Вы потратили очень много времени и не смогли разобраться, то заданиче что у Вас может решить совершенно любой человек старше лет 15 и имеющий усидчивость в 2-3 дня!
0
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
02.06.2009, 19:41  [ТС] 9
lexus_ilia, Вы конечно правы, но пока я сам разберусь и дойду до сути пройдет много времени(времени в обрез, а до меня доходит долго...). Я намного быстрее пойму и разберусь (обещаю), если передо мной будет решение... Вот как-то так....
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
02.06.2009, 19:51 10
Хорошо, Я Вам решу данную задачу.
Только у меня есть пару вопросов:
1)Что означает: " Дан указатель p0 на один из элементов непустого двусвязного списка."Как Так дан указатель? Может дано значение/позиция(номер) элемента? Или прямо Вот так дан адрес в памяти в котором хранится данный элемент?
2)Что означает: "вывести указатели на первый и последний элементы преобразованного списка."Вывести адрес памяти в которой хранятся данные переменные ?
0
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
02.06.2009, 19:57  [ТС] 11
lexus_ilia, Я всё дословно написал как в задании было, так что ничем помочь не могу... Сделайте как считаете нужным
0
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
02.06.2009, 20:39 12
Мда, а Вот интересно, как Вы хотели решить задачу не понимая условия.
Хорошо напишу как считаю нужным.

Добавлено через 28 минут 41 секунду
Вот, держите:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Program xa;
uses
  crt;
type
  TList = ^PList;
  PList = record
        Data: integer;
        Next,Prev: Tlist;
     end;
 
Procedure PrintSpis(List:TList);
begin
  While List<>nil do
  begin
    Write(List^.Data, ' ');
    List:=List^.Next;
  end;
end;
 
Procedure PrintSpisOfFile(List:TList;var f:Text);
begin
  While List<>nil do
  begin
    Write(f,List^.Data, ' ');
    List:=List^.Next;
  end;
  close(f);
end;
 
var
  Head,Last,Current,TmpList:Tlist;
  key:char;
  i,tmp:integer;
  f:Text;
  NameFile:String;
begin
  clrscr;
  Writeln('VVedite eleMeHt spiska');
  New(Current);
  Head:=Current;
  Last:=Head;
  Current^.Next:=nil;
  Current^.Prev:=nil;
  Readln(Current^.Data);
  Writeln('ProdoljiT vvod? No=Esc');
  Key:=readkey;
  While Key<>#27 do
  begin
  clrscr;
    Writeln('VVedite eleMeHt spiska');
    New(Current^.Next);
    Current^.Next^.Prev:=Current;
    Current:=Current^.Next;
    Current^.Next:=nil;
    Readln(Current^.Data);
    Last:=Current;
    Writeln('ProdoljiT vvod? No=Esc');
    Key:=readkey;
  end;
  clrscr;
  Writeln('Poly4uvLLIeUcia spisok');
  PrintSpis(Head);
  Writeln;
  Writeln('Key pressed...');
  readkey;
  Repeat
    Writeln;
    Writeln('Vvedite Nomer (1,2,3...) uckomogo elemeHta');
    Readln(tmp);
    Current:=Head;
    i:=1;
    While (Current<>NIl) and (tmp<>i) do
    begin
      inc(i);
      Current:=Current^.Next;
    end;
    dec(i);
    key:=#0;
    If Current=nil then
    begin
      Writeln('Dannogo Nomera Net v Spiske, Max po3ici9= ' ,i);
      Writeln('povtoriTb nouck? Yes=Enter');
      Key:=readkey;
    end
    else
    begin
      Writeln('NauDeHHbli element = ',Current^.Data);
      Writeln('povtoriTb nouck? Yes=Enter');
      Key:=readkey;
      { YDalenue naidennogog elemeHta}
      If Key<>#13 then
      begin
        if Current=Head then
        begin
          Head^.next^.Prev:=nil;
          Head:=Head^.next;
          Current^.Next:=nil;
          Current^.Prev:=Last;
          last^.Next:=Current;
          Last:=Last^.next;
        end
        else
          if Current<>Last then
          begin
            TmpList:=Head;
            While TmpList^.Next<>Current do
              TmpList:=TmpList^.Next;
            Current^.Next^.Prev:=TmpList;
            TmpList^.Next:=Current^.Next;
            Last^.Next:=Current;
            Current^.Prev:=Last;
            Current^.Next:=nil;
            Last:=Current;
          end;
      end;
    end;
  until Key<>#13;
  Writeln('Poly4uvLLIeUcia spisok');
  PrintSpis(Head);
  readkey;
  nameFile:='Double_Linked_list_5.txt';
  Assign(f,NameFile);
  Rewrite(f);
  PrintSpisOfFile(Head,f);
  clrscr;
  Writeln('DaHHble 3apisaHbl V Fail');
  Current:=Head;
  While Current<>nil do
  begin
    Current:=Current^.Next;
    Dispose(Head);
    Head:=Current;
  end;
  Readkey;
end.
И да, Паскаль работает с именами файла размером "12345678.txt" так что знаписывает он в файл с наименованием "double_l.txt"
2
0 / 0 / 1
Регистрация: 24.12.2008
Сообщений: 51
02.06.2009, 21:02  [ТС] 13
lexus_ilia, спасибо большое, дружище, выручил
0
0 / 0 / 1
Регистрация: 18.03.2012
Сообщений: 22
08.04.2012, 22:19 14
Реализация двусвязног списка если кому понадобится
buytask.ru/task767.html
0
08.04.2012, 22:19
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2012, 22:19
Помогаю со студенческими работами здесь

Двусвязный линейный список.
Нужно создать линейный двусвязный список....Нужно чтобы были такие процедуры или функции: Init -...

Двусвязный список, вывод на экран
Есть две процедуры вывода двусвязного псиска на экран. Print - в прямом направлении, RePrint - в...

Создать двусвязный линейный список
Создать двусвязныйй линейный список по схеме Е (на картинке) и с условиями: 1) Создание пустого...

Двусвязный циклический список в фиктивным элементом
Решаю задачки с динамической памятью. Вот односвязные списки более-менее изучил. По ним много...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru