Форум программистов, компьютерный форум, киберфорум
Наши страницы

Turbo Pascal

Войти
Регистрация
Восстановить пароль
 
0193456ali
0 / 0 / 0
Регистрация: 14.01.2013
Сообщений: 23
#1

Динамическая память - Turbo Pascal

16.01.2013, 11:14. Просмотров 580. Ответов 2
Метки нет (Все метки)

Составить программу, которая вставляет в непустой список L, элементы которого упорядочены по неубыванию, новый элемент E так, чтобы сохранилась упорядоченность
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 11:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамическая память (Turbo Pascal):

Динамическая память - Turbo Pascal
Даны две динамических вектора

Динамическая память - Turbo Pascal
Вот задание: Дана матрица (М четное число) Поменять верхнюю и нижнюю половины матрицы. Использовать динамическую память. В общем я хз как...

Динамическая память - Turbo Pascal
Дано натуральное число n, действительные числа a(1),...,a(2n). Получить ...

Динамическая память GRAPH - Turbo Pascal
Нужно часть рисунка занести в динамическую память. Что не так? Не работает. size:=ImageSize(m-50,n-50,m+50,n+50); ...

Программа с раздела динамическая память - Turbo Pascal
Всем привет! Условие задачи уже когда то писали на форуме, но увы ответов нет... Вот условие: Даны натуральное число n, действительные...

Динамическая память. Максимальный элемент - Turbo Pascal
Составить программу занесения в динамическую память вещественного массива из 10000 вещественных чисел, хранящихся в типизированном файле на...

2
shaiah
0 / 0 / 0
Регистрация: 16.01.2013
Сообщений: 12
16.01.2013, 11:34 #2
Под списком массив элементов имеешь ввиду?
0
Mawrat
12788 / 5695 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
16.01.2013, 17:30 #3
Здесь имеется в виду динамический однонаправленный (односвязанный) список.
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
program Project1;
 
type
  //Тип основных данных.
  TData = Integer;
  //Указатель на элемент списка.
  TPElem = ^TElem;
  //Элемент списка.
  TElem = record
    Data : TData; //Основные данные.
    PNext : TPElem; //Указатель на следующий элемент.
  end;
  //Список.
  TDList = record
    PFirst, PLast : TPElem; //Указатели на первый и на последний элементы списка.
  end;
 
//Процедура инициализации списка. Внимание! Эту процедуру можно выполнять
//только в отношении пустого списка. Иначе, произойдёт утечка памяти.
procedure Init(var aList : TDList);
begin
  aList.PFirst := nil;
  aList.PLast := nil;
end;
 
//Добавление элемента в конец списка.
procedure Add(var aList : TDList; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := nil;
  if aList.PFirst = nil then
    aList.PFirst := PElem
  else
    aList.PLast^.PNext := PElem;
  aList.PLast := PElem;
end;
 
//Освобождение памяти, занятой под список.
procedure Free(var aList : TDList);
var
  PElem, PDel : TPElem;
begin
  PElem := aList.PFirst;
  while PElem <> nil do begin
    PDel := PElem;
    PElem := PElem^.PNext;
    Dispose(PDel);
  end;
  Init(aList);
end;
 
//Распечатка списка.
procedure Print(var aList : TDList);
var
  PElem : TPElem;
begin
  PElem := aList.PFirst;
  while PElem <> nil do begin
    if PElem <> aList.PFirst then Write(', ');
    Write(PElem^.Data);
    PElem := PElem^.PNext;
  end;
  Writeln;
end;
 
//Вставка элемента в список без нарушения упорядоченности по неубыванию.
procedure Ins(var aList : TDList; const aData : TData);
var
  PElem, PNext, PIns : TPElem;
begin
  //Поиск первого элемента, после которого надо сделать вставку.
  PElem := nil; //Указатель на предыдущий элемент.
  PNext := aList.PFirst; //Указатель на текущий элемент.
  while (PNext <> nil) and (PNext^.Data < aData) do begin
    PElem := PNext;
    PNext := PNext^.PNext;
  end;
 
  //Создаём элемент.
  New(PIns);
  PIns^.Data := aData;
  //Если надо вставить в начало списка.
  if PElem = nil then begin
    PIns^.PNext := aList.PFirst;
    aList.PFirst := PIns;
    //Если вставка выполнена в пустой список.
    if aList.PLast = nil then aList.PLast := PIns;
  //Если надо вставить после элемента.
  end else begin
    PIns^.PNext := PNext;
    PElem^.PNext := PIns;
    //Если вставка выполнена в конец непустого списка.
    if aList.PLast = PElem then aList.PLast := PIns;
  end;
end;
 
const
  M = 8; //Количество элементов в списке.
var
  L : TDList;
  Data : TData;
  i : Integer;
  S : String;
begin
  //Начальная инициализация списка.
  Init(L);
 
  repeat
    //Создаём список, упорядоченный по неубыванию.
    for i := 1 to M do Add(L, i * 2);
    Writeln('Создан список:');
    Print(L);
 
    Writeln('Задайте значение вставляемого элемента:');
    Readln(Data);
    Ins(L, Data); //Вставка элемента без нарушения упорядоченности.
    Writeln('Список после вставки нового элемента:');
    Print(L);
 
    Free(L);
    Writeln('Память, выделенная для списка, освобождена.');
 
    Writeln('Повторить - Enter, выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2013, 17:30
Привет! Вот еще темы с ответами:

Динамическая память, однонаправленные и двунаправленные списки - Turbo Pascal
Разработать программу, используя однонаправленные и двунаправленные списки. Начав написание программы, не забудьте о том, что будет...

Динамическая память (список, очередь, стек) - Turbo Pascal
Добрый вечер.. Простите, но т.к. я не особо разобрался с дин. памятью прошу помощи ещё с данной задачей..

Динамическая память: поменять местами первый и последний символ строки - Turbo Pascal
при помощи ДИНАМИЧЕСКОЙ ПАМЯТИ поменять местами первый и последний символ в рядке . Добавлено через 7 минут Дан ряд символов, нужно...

Динамическая память. Создать стек для ввода информации с клавиатуры и вывести информацию в обратом порядке на монитор - Turbo Pascal
Создать стек для ввода информации с клавиатуры и вывести информацию в обратом порядке на монитор. Информация: марка автомобиля, цвет,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru