Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477

Двунаправленный список однонаправленных упорядоченных подсписков

16.02.2009, 15:43. Показов 4796. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Двунаправленный список однонаправленных упорядоченных подсписков. Реализация задачи должна быть только с применением динамических структур. Дополнительно реализовать:
  • Нахождение произведения всех элементов указанного подсписка.
  • Разбиение n-го подсписка на два подсписка отличающихся не более, чем на один элемент.
  • Найти количество элементов в n-ом подсписке, стоящих после элемента с ключом k.
Плаз,подскажите,что за подсписки и где про них есть материал?

ребят,ну что никто не знает,а то я всю голову себе поламала...

я знаю есть человек,который знает ответ...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.02.2009, 15:43
Ответы с готовыми решениями:

Из составного списка сделать простой список, освобождая исходный список от подсписков
Задание Напишите программу, которая из составного списка делает простой список, освобождая исходный список от подсписков. В prolog...

Получить список списков и вернуть список из N-х элементов подсписков
Доброго времени суток! пожалуйста помогите с функциональным программированием! ^_^ Условие задачи: напишите функцию ] -> Int...

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

25
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
22.02.2009, 18:20  [ТС]
Студворк — интернет-сервис помощи студентам
ага,разобралась,а как тогда быть с "Разбиение n-го подсписка на два подсписка отличающихся не более, чем на один элемент."?
0
 Аватар для lexus_ilia
3067 / 727 / 69
Регистрация: 24.09.2008
Сообщений: 1,531
22.02.2009, 21:19
а что имеется ввиду под словом "разбиение"? Если имеется ввиду, что пользователь вводит какое-то число (номер подсписка), а программа разбивает его на 2, то тогда встаёт вопрос как связать новопоявившийся подсписок с элементом списка от подсписка которого он было образован, если добавить понятие массива указателей от каждого элемента списка на начала подсписков, то тогда всё можно реализовать...
Или имелось ввиду что произойдёт сравнение подсписков и все отличающиеся не более чем на 1 элемент (т.е. либо одинаковые, либо различия на 1 элемент) подсписки будут разбиваться, тогда всё равно придётся ввести массив указателей на начала подсписков,а потом получается всё тоже самое, просто всё в цикле и некоторые проверки добавятся...
0
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
23.02.2009, 13:56  [ТС]
я тоже над этим голову ламала и мне кажется,что видимо это условие рассчитано на то что видимо пользователь сам вводит число,после которого подсписок делиться,только как это реализовать,я что-то сообразить не могу

Добавлено через 13 часов 15 минут 52 секунды
проверьте,плиз на правильность и на корректность,и чтоб программа условию соответствовала,а то у меня голова уже затуманенная
Code
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
program pod_spisok;
uses crt;
Const
     Enter='Нажмите ENTER..';
     EnterOrSpas='Нажмите ENTER или ПРОБЕЛ ...';
     Inv1='Создать список';
     Inv2='Создать подсписок';
     Inv3='Добавить элемент в список';
     Inv4='Добавить элемент в подсписок';
     Inv5='Удалить элемент из списка';
     Inv6='Удалить элемент из подспика';
     Inv7='Найти произведение всех элементов указанного подсписка';
     Inv8='Разбить n-ый подсписок на два подсписка отличающихся не более, чем на один элемент';
     Inv9='Найти количество элементов в n-ом подсписке, стоящих после элемента с ключом k';
     CaseStr='Выберите курсором нужный режим.';
 
type
   TypeOfElem=Char;
   odnosvyazniy_spisok=^spisok_os;
   spisok_os = record
   next:odnosvyazniy_spisok;
   data:real;
   Elem:TypeOfElem;
   end;
   dvuh_svyazniy_spisok=^spisok_ds;
   spisok_ds = record
   next,prev:dvuh_svyazniy_spisok;
   Inf:real;
   Inf1,Inf2:string;
   end;
   Second=record
   fir,las:dvuh_svyazniy_spisok;
   end;
Procedure sozdanie_spisok;
var
r:dvuh_svyazniy_spisok;
n:real;
    begin
      New(r);
      r^.Next:=nil;
      r^.Inf:=n;
    end;
Procedure sozdanie_podspisok;
var
r:odnosvyazniy_spisok;
b:real;
    begin
      New(r);
      r^.Next:=nil;
      r^.Data:=b;
    end;
procedure Add_spisok;
var
s:dvuh_svyazniy_spisok;
n:string;
L:Second;
begin
   repeat
    Writeln('Введи элемент списка: ');
    Readln(n);
     if length(n)<>0 then
          begin
             New(s);
             S^.next:=nil;
             S^.prev:=nil;
             S^.Inf1:=n;
              if L.fir=nil then
                L.fir:=S
              else
                 begin
                    L.las^.next:=S;
                    S^.prev:=L.las;
                 end;
 
             L.las:=S;
          end;
   until length(n)=0;
end;
procedure Add_podspisok;
var
Info: TypeOfElem;
q:odnosvyazniy_spisok;
ElemOfStr: odnosvyazniy_spisok ;
begin
  if not ( ElemOfStr= nil ) then begin
    new( q );
    q^.next:= ElemOfStr^.next;
    q^.Elem:= Info;
    ElemOfStr^.next:= q
  end
end;
procedure Delete_spisok(var L:Second);
var NowElem,ElemWasDel:dvuh_svyazniy_spisok;
    DelEl,Num:integer;
begin
   WriteLn('Сколько удалить'' элементов:');
   ReadLn(DelEl);
   NowElem:=L.fir;
   Num:=1;
    while Num<>DelEl+1 do
      begin
         L.fir:=NowElem^.next;
         ElemWasDel:=NowElem;
         NowElem:=NowElem^.next;
         dispose(ElemWasDel);
         Num:=Num+1;
      end;
 
end;
Procedure Delet_podspisok( ElemOfStr: odnosvyazniy_spisok ); 
var q, p: odnosvyazniy_spisok; 
begin 
  if ElemOfStr^.next <> nil then begin
    q:= ElemOfStr^.next;
    p:= ElemOfStr^.next;
    ElemOfStr^.next:= p^.next;
    dispose( q ); 
  end 
end;
Procedure proizvedenie;
var 
P: real;
S:odnosvyazniy_spisok;
begin 
P:=1;
repeat
P:=P*S^.data;
S:=S^.next;
until S=nil;
end;
Procedure Razdelitel;
type
spisok=odnosvyazniy_spisok;
var
r:spisok;
head1,head2:spisok;
b:real;
cur : odnosvyazniy_spisok;
    begin
      Writeln('Введите элементы подсписка                   ');
      New(r);
      r^.Next:=nil;
      r^.Data:=b;
    end;
  begin     
    Writeln('Введите элемент,после которого список будет разделен', head2,' ');
     head2:=nil 
    begin  cur:=head2;
      while cur^.next<>nil do cur:=cur^.next;
      cur^.next:=head2;
   end;
end;
Procedure kolichestvo;
var
r:odnosvyazniy_spisok;
k,kol:integer;
begin
 while (r<>nil) or (r^.data<>k) do
  r:=r^.Next;
 kol:=0;
 while r^.Next<>nil do 
 begin
  inc(kol);
  r:=r^.Next
 end;
end;
Function MainMenu:boolean;
const
 i:integer=1;
begin
  MainMenu:=false;
  clrscr;
  Writeln(Inv1);
  Writeln(Inv2);
  Writeln(Inv3);
  Writeln(Inv4);
  Writeln(Inv5);
  Writeln(Inv6);
  Writeln(Inv7);
  Writeln(Inv8);
  Writeln(Inv9);
  Writeln('Выход');
  OutMessageXY(5,24,CaseStr,Enter);
  Gotoxy(1,i);
  repeat
    ch:=readkey;
    if(ch=#32)or(ch=#13)then
      begin
        case i of
          1:sozdanie_spisok;
          2:sozdanie_podspisok;
          3:Add_spisok;
          4:Add_podspisok;
          5:Delete_spisok;
          6:Delete_podspisok;
          7:proizvedenie;
          8:Razdelitel;
          8:kolichestvo; 
          9:begin
              MainMenu:=true;
              Exit;
            end;
          end;
        end
      else UpDown(i,8);
    until false;
  end;
begin
  clrscr;
  repeat until MainMenu;
end.
0
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
24.02.2009, 17:54  [ТС]
Добровольцы есть?
0
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
26.02.2009, 10:08  [ТС]
вот немного добавила
Code
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
program pod_spisok;
uses crt;
Const
     Enter='Нажмите ENTER..';
     EnterOrSpas='Нажмите ENTER или ПРОБЕЛ ...';
     Inv1='Создать список';
     Inv2='Создать подсписок';
     Inv3='Добавить элемент в список';
     Inv4='Добавить элемент в подсписок';
     Inv5='Удалить элемент из списка';
     Inv6='Удалить элемент из подспика';
     Inv7='Найти произведение всех элементов указанного подсписка';
     Inv8='Разбить n-ый подсписок на два подсписка отличающихся не более, чем на один элемент';
     Inv9='Найти количество элементов в n-ом подсписке, стоящих после элемента с ключом k';
     CaseStr='Выберите курсором нужный режим.';
     TaOld=15;
var
ch:char;
type
   TypeOfElem=Char;
   odnosvyazniy_spisok=^spisok_os;
   spisok_os = record
   next:odnosvyazniy_spisok;
   data:real;
   Elem:TypeOfElem;
   end;
   dvuh_svyazniy_spisok=^spisok_ds;
   spisok_ds = record
   next,prev:dvuh_svyazniy_spisok;
   Inf:real;
   Inf1,Inf2:string;
   end;
   Second=record
   fir,las:dvuh_svyazniy_spisok;
   end;
Procedure OutMessageXY(X,Y:Byte;Str1,Str2:String);
var
 Xcur, Ycur:byte;
begin
     Xcur:=WHereX;
     Ycur:=WHereY;
     GotoXY(X,Y);
     TextAttr:=Red+16*LightGray+Blink;
     Write(Str1,Str2);
     TextAttr:=TaOld;
     GotoXY(Xcur,Ycur);
end;
Procedure UpDown(var Vari:integer;Im:byte);
begin
  if ch=#0 then ch:=readkey;
  case ch of
    #72: begin
           if vari=1 then vari:=im else vari:=vari-1;
           gotoxy(1,vari);
         end;
    #80: begin
           if vari=im then vari:=1 else vari:=vari+1;
           gotoxy(1,vari);
         end;
    end;
end;
Procedure sozdanie_spisok;
var
r:dvuh_svyazniy_spisok;
n:real;
    begin
      New(r);
      r^.Next:=nil;
      r^.Inf:=n;
    end;
Procedure sozdanie_podspisok;
var
r:odnosvyazniy_spisok;
b:real;
    begin
      New(r);
      r^.Next:=nil;
      r^.Data:=b;
    end;
procedure Add_spisok;
var
s:dvuh_svyazniy_spisok;
n:string;
L:Second;
begin
   repeat
    Writeln('Введи элемент списка: ');
    Readln(n);
     if length(n)<>0 then
          begin
             New(s);
             S^.next:=nil;
             S^.prev:=nil;
             S^.Inf1:=n;
              if L.fir=nil then
                L.fir:=S
              else
                 begin
                    L.las^.next:=S;
                    S^.prev:=L.las;
                 end;
 
             L.las:=S;
          end;
   until length(n)=0;
end;
procedure Add_podspisok;
var
Info: TypeOfElem;
q:odnosvyazniy_spisok;
ElemOfStr: odnosvyazniy_spisok ;
begin
  if not ( ElemOfStr= nil ) then begin
    new( q );
    q^.next:= ElemOfStr^.next;
    q^.Elem:= Info;
    ElemOfStr^.next:= q
  end
end;
procedure Delete_spisok(var L:Second);
var NowElem,ElemWasDel:dvuh_svyazniy_spisok;
    DelEl,Num:integer;
begin
   WriteLn('Сколько удалить'' элементов:');
   ReadLn(DelEl);
   NowElem:=L.fir;
   Num:=1;
    while Num<>DelEl+1 do
      begin
         L.fir:=NowElem^.next;
         ElemWasDel:=NowElem;
         NowElem:=NowElem^.next;
         dispose(ElemWasDel);
         Num:=Num+1;
      end;
 
end;
Procedure Delet_podspisok( ElemOfStr: odnosvyazniy_spisok ); 
var q, p: odnosvyazniy_spisok; 
begin 
  if ElemOfStr^.next <> nil then begin
    q:= ElemOfStr^.next;
    p:= ElemOfStr^.next;
    ElemOfStr^.next:= p^.next;
    dispose( q ); 
  end 
end;
Procedure proizvedenie;
var 
P: real;
S:odnosvyazniy_spisok;
begin 
P:=1;
repeat
P:=P*S^.data;
S:=S^.next;
until S=nil;
end;
Procedure Razdelitel;
type
spisok=odnosvyazniy_spisok;
var
r:spisok;
head1,head2:spisok;
b:real;
cur : odnosvyazniy_spisok;
    begin
      Writeln('Введите элементы подсписка                   ');
      New(r);
      r^.Next:=nil;
      r^.Data:=b;
    end;
  begin     
    Writeln('Введите элемент,после которого список будет разделен', head2,' ');
    Readln(head2);
    head2:=nil
    begin  cur:=head2;
      while cur^.next<>nil do cur:=cur^.next;
      cur^.next:=head2;
   end;
end;
Procedure kolichestvo;
var
r:odnosvyazniy_spisok;
k,kol:integer;
begin
 while (r<>nil) or (r^.data<>k) do
  r:=r^.Next;
 kol:=0;
 while r^.Next<>nil do 
 begin
  inc(kol);
  r:=r^.Next
 end;
end;
Function MainMenu:boolean;
const
 i:integer=1;
begin
  MainMenu:=false;
  clrscr;
  Writeln(Inv1);
  Writeln(Inv2);
  Writeln(Inv3);
  Writeln(Inv4);
  Writeln(Inv5);
  Writeln(Inv6);
  Writeln(Inv7);
  Writeln(Inv8);
  Writeln(Inv9);
  Writeln('Выход');
  OutMessageXY(5,24,CaseStr,Enter);
  Gotoxy(1,i);
  repeat
    ch:=readkey;
    if(ch=#32)or(ch=#13)then
      begin
        case i of
          1:sozdanie_spisok;
          2:sozdanie_podspisok;
          3:Add_spisok;
          4:Add_podspisok;
          5:Delete_spisok;
          6:Delete_podspisok;
          7:proizvedenie;
          8:Razdelitel;
          8:kolichestvo; 
          8:begin
              MainMenu:=true;
              Exit;
            end;
          end;
        end
      else UpDown(i,8);
    until false;
  end;
begin
  clrscr;
  repeat until MainMenu;
end.
плиз,проверьте!!!%)
0
Дашики
 Аватар для Дашустрик
7 / 7 / 1
Регистрация: 26.09.2008
Сообщений: 477
05.03.2009, 12:51  [ТС]
ну так как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.03.2009, 12:51

список подсписков
Аргумент функции - N. Результат - список подсписков (всего N подсписков). Первый подсписок - единица, второй подсписок - две двойки, третий...

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

Clojure Список глубины подсписков
Написать функцию, выводящую список глубины подсписков (атом – глубина 0). Помогите блондинке, пожалуйста. =)

Составить список из максимумов подсписков.
Помогите пожалуйста решить задачу на Турбо Прологе! Сформировать список L1 из элементов: максимальный элемент всего списка L, ...

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


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru