Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2015, 00:50   #1
Gleb_KA
Новичок
Джуниор
 
Регистрация: 12.03.2015
Сообщений: 2
Смущение Циклический односвязный список с барьером (фиктивным элементом).

Условие:
Циклический односвязный список с барьером (фиктивным элементом). Порядок :FIFO (очередь)
создать структуру данных для организации линейного списка. Для идентификации каждый элемент списка должен содержать ключевое поле произвольного типа ( integer , real , char и т.д.). Реализовать следующие операции в виде процедур или функций. Мне нужно сделать Циклический односвязный список с барьером ( фиктивным элементом ).
Начальная инициализация структуры ( список пуст ) .
Добавление элемента в список (с учетом порядка FIFO(очередь) ) .
Удаление элемента списка (с учетом порядка FIFO(очередь) ) .
Определение размера .
Вывод структуры на экран .
Поиска элемента по заданному ключу .
Далее добавление элемента после элемента которого нашли ключем, перед ним и удаление после него и перед ним.Снимок.PNG
Gleb_KA вне форума Ответить с цитированием
Старый 12.03.2015, 12:16   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Что делалось самостоятельно? Предъявлять в виде кода, естественно.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 12.03.2015, 17:43   #3
Gleb_KA
Новичок
Джуниор
 
Регистрация: 12.03.2015
Сообщений: 2
По умолчанию

Вот делал очередь

Код:
program ochered;
uses crt;
label metka;
const maxsize=8;
type data=char;
var fifo:array[1..maxsize] of data;
top, bottom:1..maxsize;
a:data;
ch:char;

function cut(z:integer):integer;
	begin
	cut:=z mod maxsize+1;
	end;

procedure init;
	begin
	top:=1;
	bottom:=1;
	end;

procedure clr;
	begin
	top:=bottom;
	end;
	
function push(a:data):boolean;
	begin
	if cut(bottom)=top then
	push:=false
	else begin
		push:=true;
		fifo[bottom]:=a;
		bottom:=cut(bottom);
		end;
		end;
		
function pop(var a:data):boolean;
	begin
	if top=bottom then pop:=false
	else begin
		pop:=true;
		a:=fifo[top];
		top:=cut(top);
		end;
	end;
	
function size:integer;
	begin
	if top<=bottom then 
	size:=bottom-top
	else size:=bottom+maxsize-top;
	end;
	
procedure list;
var i:integer;
	begin
	if top=bottom then
	begin
	writeln('Empty');
	exit;
	end
	else 
		begin
		i:=top;
		repeat
		write(fifo[i],' ');
		i:=cut(i);
		until i=bottom;
		end;
	writeln;
	end;
		
begin
metka:
clrscr;
writeln('1-Init');
writeln('2-Push');
writeln('3-Pop');
writeln('4-Size');
writeln('5-Clear');
writeln('6-List');
writeln('7-Exit');
ch:=readkey;
case ch of
'1': begin
	clrscr;
	init;
	writeln('Initialization was successful');
	writeln('Press any key');
	readkey;
	goto metka;
end;
'2':begin
	clrscr;
	if cut(bottom)=top then
	writeln('Full')
	else begin
	write('Input element: ');
	readln(a);
	push(a);
	end;
writeln('Press any key');
readkey;
goto metka;
end;
'3':begin
	if top=bottom then
	writeln('Empty')
	else
	begin
	pop(a);
	writeln(a,' was deleted');
	end;
writeln('Press any key');
readkey;
goto metka;
end;
'4':begin
	writeln('Size=',size);
writeln('Press any key');
readkey;
goto metka;
end;
'5':begin
	clr;
	writeln('Was cleared');
writeln('Press any key');
readkey;
goto metka;
end;
'6':begin
	list;
writeln('Press any key');
readkey;
goto metka;
end;
end;
end.

____
Код нужно форматировать тегами [CODE] (это кнопка # на панели форматирования)
Модератор

Последний раз редактировалось Serge_Bliznykov; 13.03.2015 в 09:57. Причина: смайлы
Gleb_KA вне форума Ответить с цитированием
Старый 13.03.2015, 06:31   #4
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Не проникся смыслом кода. Что Вы хотите им сказать?

Имею мнение, что работа со списками - это в первую очередь работа с памятью и указателями, а не буквенным массивом.

p.s. используйте тег кода, который ставится вот такой кнопочкой:
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте кольцевой односвязный список с фиктивным элементом ViatorTK Общие вопросы C/C++ 1 19.11.2013 07:44
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список San111 Паскаль, Turbo Pascal, PascalABC.NET 1 15.05.2012 22:08
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
односвязный список yuliyayuliya Помощь студентам 1 26.04.2011 16:17
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52