Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi НЕ вводятся данные в StringGrid Почему не вводятся данные в форму? помогите пожалуйста найти ошибку. https://www.cyberforum.ru/ delphi-beginners/ thread574690.html Delphi Двумерный массив
Помогите написать код ,что бы он находил сумму каждой строки двумерного массива и выводил ее отдельно,то есть посчитал сумму одной,вывел и перешел на следующую, посчитал сумму следующей,вывел и перешел на следующую и т.д. Заранее всех благодарю!
Delphi RichEdit + Addict Приветствую. Есть задача: - расширить возможности компонента RichEdit в плане проверки орфографии с помощью продукта Addict Кто-нибудь сталкивался с такой задачей? Где можно почерпнуть информацию? Заранее спасибо. https://www.cyberforum.ru/ delphi-beginners/ thread574632.html Delphi Не могу разобраться с задачей, много формул (Delphi) Расчет силы и мощности резания при черновом точении древесины Точение - процесс резания при вращательном движении заготовки и подаче резца вдоль или поперек оси вращения. Надо рассчитать силу и мощность резания для трех пород древесины по нижеследующим зависимостям, определяющим режим резания. 1. Средняя скорость резания... https://www.cyberforum.ru/ delphi-beginners/ thread574616.html
Delphi 2010 за что в проекте созданной программы отвечает файл Project1.dproj ? Delphi
CodeGear - Delphi 2010 за что в проекте созданной программы отвечает файл Project1.dproj ?
Delphi Зависание при вполнении While Здравствуйте, уважаемые участники форума! Пишу программку которая подхватывает из указанной папки информацию о WAV-файлах и выводит их список в FileListView. Затем нужно отсеять те файлы, которые не удовлетворяют указанной частоте дискретизации. Сделал это так: procedure TForm1.ButtonSortClick(Sender: TObject); // ÊÍÎÏÊÀ... https://www.cyberforum.ru/ delphi-beginners/ thread574592.html
Delphi Массивы.. https://www.cyberforum.ru/ delphi-beginners/ thread574581.html
Выручайте!! 1.Задать размерность (число строк и столбцов), минимальное и максимальное значения элементов динамического двумерного массива (количество элементов может изменяться в ходе выполнения одной и той же программы). Задать тип массива в программном коде. Ввести элементы массива A(n,n) с помощью генератора случайных чисел. Вывести образованный массив на экранную форму и в текстовое...
Delphi Поменять местами элементы массива
Поменять местами второй и четвертый элемент,если они положительны,или первый и третий,если они отрицательны.
Delphi Работа с таблицей из файла-шаблона Добрый вечер. Ребята, помоги разобраться как работать с таблицей в Word из файла-шаблона (.dot). Суть такова: подключаю экземпляр Word'а, открываю файл-шаблон - с этим все в порядке; затем необходимо внести в 1-ую ячейку таблицы данные из combobox1, во 2-ую ячейку данные из combobox2, в 3-юю ячейку таблицы данные из combobox3, затем, при нажатии на кнопку, занести эти данные в таблицу и... https://www.cyberforum.ru/ delphi-beginners/ thread574538.html Delphi Дискретная величина Помогите решить. Дискретная величина X может принимать только два значения x1 и x2, причем x1< x2. Известна вероятность р1 возможного значения x1, математическое ожидание М(Х) и дисперсия D(x). Найти закон распределения этой случайной величины. p1=0,8 ; М(X)=3,2 ; ... https://www.cyberforum.ru/ delphi-beginners/ thread574522.html
Delphi игра
Помогите разработать программу имитации игры в "Кости". Предоставить возможность "кидать кости" поочередно компьютера и человеку. Вести счет игры. Пояснение: в кости играют двое - в нашем случае вторым будет компьютер. Сначала у обоих игроков по 0 баллов. Кубик бросают по очереди. Когда игрок на своем ходе бросает кубик и выбрасывает от 2 до 6, то это записывается ему в очки, полученные на этом...
Delphi Метод численного интегрирования и дифференцирования функций https://www.cyberforum.ru/ delphi-beginners/ thread574497.html
Разработать алгоритмы численного дифференцирования и интег-рирования функции \sqrt{lnx}+\sqrt{tgx}-{x}^{4/5}+\frac{{x}^{3}}{cosx}+1=0. Пределы интегрирования функции от x=2 до x=10. При выполнении интегрирования использовать метод трапециий. Рассчитать значение интеграла для различных шагов разбиения, построить график зависимости значения интеграла от количества шагов разбиения. Построить...
13100 / 5881 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
15.05.2012, 09:15 0

Однонаправленные кольцевые списки - Delphi - Ответ 3032589

15.05.2012, 09:15. Показов 3082. Ответов 2
Метки (Все метки)

Лучший ответ Сообщение было отмечено funy как решение

Решение

На форму надо положить 2 TMemo и 1 TButton. В Мемо1 вводятся целые числа, которые будут добавлены в список. Каждое число должно быть записано на отдельной строке. Числа добавляются в конец кольцевого списка. В Мемо2 выводятся сведения о результатах работы.
Delphi
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
type
  //Основоные данные.
  TData = Integer;
  //Тип указателя на элемент списка.
  TPElem = ^TElem;
  //Тип элемента списка.
  TElem = record
    Data : TData;
    PNext : TPElem;
  end;
  //Для кольцевого списка не будем заводить отдельный тип.
  //Кольцевой список будет представлен указателем типа PList : TPElem.
  //Этот указатель указывает на последний элемент списка.
  //Соответственно, указателем на первый элемент списка является: PList^.PNext.
 
//Добавление элемента в конец однонаправленного кольцевого списка.
procedure AddL(var aPList, aPElem : TPElem);
begin
  if aPElem = nil then Exit;
 
  if aPList = nil then
    //Единственный элемент указывает сам на себя.
    aPElem^.PNext := aPElem
  else begin
    //Добавляем новый элемент после последнего в списке.
    aPElem^.PNext := aPList^.PNext;
    aPList^.PNext := aPElem;
  end;
  //Указатель списка переводим на добавленный элемент. - Теперь он является
  //последним в списке.
  aPList := aPElem;
end;
 
//Удаление однонаправленного кольцевого списка из памяти и инициализация.
procedure ListFree(var aPList : TPElem);
var
  PLast, PDel : TPElem;
begin
  if aPList = nil then Exit;
 
  PLast := aPList;
  repeat
    PDel := aPList;
    aPList := aPList^.PNext;
    Dispose(PDel);
  until aPList = PLast;
  aPList := nil;
end;
 
//Распечатка однонаправленного списка aN раз.
function ListToStr(const aPList : TPElem; const aN : Word) : String;
var
  PElem : TPElem;
  i, Cnt : Integer;
begin
  if aPList = nil then begin
    Result := 'Список пуст.';
    Exit;
  end;
 
  Result := '';
  //Указатель на первый элемент списка.
  PElem := aPList^.PNext;
  i := 0;
  Cnt := 0; //Счётчик пройденных колец.
  while Cnt < aN do begin
    Inc(i);
    if i > 1 then Result := Result + ', ';
    Result := Result + IntToStr(PElem^.Data);
    if PElem = aPList then Inc(Cnt); //Счётчик колец.
    PElem := PElem^.PNext;
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  PList, PElem : TPElem;
  i : Integer;
  S : String;
begin
  //Начальная инициализация списка. Такую инициализацию можно выполнять
  //только в отношении пустого списка. Иначе, будут утечки памяти.
  PList := nil;
 
  //Создаём кольцевой список путём добавления элементов в его конец.
  for i := 0 to Memo1.Lines.Count - 1 do begin
    S := Memo1.Lines[i];
    if S = '' then Continue; //Пропуск пустых строк.
    New(PElem);
    PElem^.Data := StrToInt(S);
    AddL(PList, PElem);
  end;
 
  //Распечатка списка.
  Memo2.Lines.Add('--------------------------------------------------');
  Memo2.Lines.Add('Создан список:');
  Memo2.Lines.Add(ListToStr(PList, 1));
 
  //Распечатка списка.
  Memo2.Lines.Add('Для демонстрации обхода кольцевого списка распечатаем его 3 раза:');
  Memo2.Lines.Add(ListToStr(PList, 3));
 
  //Удаление списка из памяти.
  ListFree(PList);
  Memo2.Lines.Add('Список удалён из памяти.');
end;


Вернуться к обсуждению:
Однонаправленные кольцевые списки Delphi
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.05.2012, 09:15
Готовые ответы и решения:

Двунаправленные кольцевые списки
Здравствуйте, уважаемые форумчане! Нужна помощь в доработке Двунаправленного кольцевого списка ...

Однонаправленные линейные списки
Помогите с одноправленным линейным списком.Происходит ошибка на этапе выполения.

Кольцевые списки
Зачем нужны кольцевые односвязные и двусвязные списки? Когда они могут понадобиться? Ведь, если...

Кольцевые списки
Здравствуйте, как реализовать удаление в кольцевом списке ? Читал, что можно сделать так, чтобы при...

2
15.05.2012, 09:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2012, 09:15
Помогаю со студенческими работами здесь

Кольцевые списки
люди добрые, написал программу, теперь надо в ней сделать эти три списка в один кольцевой, но при...

Кольцевые однонапрвленые списки
Привет, нужно написать програму, которая в кольцевом однонаправленом списке заменит все числа...

Кольцевые списки на базе двунаправленных списков
Всем привет! Помогите решить задачу: Пусть L обозначает кольцевой двунаправленный список с...

Однонаправленные списки
Сформировать два однонаправленных списка S1 и S2, сформировать список S3, куда войдут только...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru