Процедура удаления первого элемента из очереди - Free Pascal
Формулировка задачи:
День добрый .
Уже 2 день люблю свой мозг с этим.
Какая процедура удаления первого элемента очереди ?
Конец очереди слева (лефт ) а начала справа (райт )
То есть если ввожу 1 потом 2 потом 3
то выводит : 3 2 1.
Переменные и типы:
Листинг программы
- Type
- inter=integer;
- Link=^turn;
- turn=record
- elem:inter;
- Next: Link;
- end;
- Var left,right,a:Link;
Решение задачи: «Процедура удаления первого элемента из очереди»
textual
Листинг программы
- uses crt;
- Type
- inter=integer;
- Link=^turn;
- turn=record
- elem:inter;
- Next: Link;
- end;
- Var left,right:Link;
- znach:inter;
- ch:char;
- x:integer;
- Procedure sozd(Var left,right:link);
- begin
- Left:=nil;
- Right:=nil;
- end;
- procedure Add(var newEl:Link; znach1:inter);
- var
- c:Link;
- begin
- New(c);
- c^.next:=newEl;
- c^.elem:=znach1;
- newEl:=c;
- If Right=nil then Right:=c;
- end;
- Procedure FreeMemory(left1:Link);
- var
- c:Link;
- begin
- If left1<>nil then
- while left1<>nil do
- begin
- c:=left1;
- left1:=left1^.next;
- Dispose(c);
- end;
- end;
- procedure Vivid(left1:Link);
- begin
- if left1=nil then
- begin
- writeln('Очередь пуста.');
- readln;
- exit;
- end;
- while left1<>nil do
- begin
- Write(left1^.elem, ' ');
- left1:=left1^.next
- end;
- end;
- procedure DelFirst(var rig:link);
- Var a : link;
- begin
- if left=nil then begin
- write('pusto');
- exit;
- end;
- If left=rig then
- Begin
- Dispose(rig);
- rig:=nil;
- left:=nil;
- end
- else
- Begin
- a:=left;
- While a^.Next<>rig do a:=a^.Next;
- Dispose(rig);
- a^.Next:=nil;
- rig:=a;
- end;
- end;
- begin;
- Left:=nil;
- Right:=nil;
- Writeln ('Створити нову чергу ? ');
- Writeln ('Якщо так то нажміть " 1 "');
- Writeln ('Якщо ні, нажімть " 0 "');
- Readln(x);
- if x=1 then begin
- repeat
- clrscr;
- Writeln('Черга створена');
- Writeln('Виберіть наступну дію:');
- Writeln('1) Додати елемент.');
- Writeln('2) Вивести елементи.');
- Writeln('3) Видалити елемент ');
- Writeln('4) Вихід з программи.');
- writeln;
- ch:=readkey; If Ch=#0 then Ch:=Readkey;
- case ch of
- '1':begin
- Writeln('Введіть елемент, який потрібно додати');
- readln(znach);
- Add(left,znach);
- end;
- '2': begin
- clrscr;
- Vivid(left);
- readln;
- end;
- '3':begin
- ClrScr;
- DelFirst(right);
- Vivid(left);
- Readln;
- end;
- end;
- until ch='4';
- freememory(left);
- end
- else
- exit;
- end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д