All pastes #942958 Raw Edit

Anonymous

public text v1 · immutable
·published 2008-03-14 21:19 UTC
rendered paste body
program laba_4;
type
   link	= ^kom;
   kom	= record
	     prev : link;
	     number  : integer;
	     next : link;
	  end;
	
var     head:link;
	choise,number,i:integer;

procedure create(var head:link);
var number:integer;
begin
	writeln('new list has been created');
	writeln('input data');
	readln(number);
	new(head);
	head^.number:=number;
	head^.prev:=head;
	head^.next:=head;
end;

function findnumber(head:link):integer;
var numberlink:integer;
    temp:link;
begin
	temp:=head;
	numberlink:=1;
	repeat 
		temp:=temp^.next;
		numberlink:=numberlink+1;
	until temp^.next=head;
	findnumber:=numberlink;
end;

procedure addfin(var head:link);
var number:integer;
    curr:link;
begin
	writeln('input data');
	readln(number);
	curr:=head;
	repeat 
		curr:=curr^.next;
	until curr^.next = head;
	new(curr^.next);
	(curr^.next)^.number:=number;
	(curr^.next)^.prev:=curr;
	(curr^.next)^.next:=head;
end;

procedure addmed(var head:link;n:integer);
var i,numberlink:integer;
    temp:link;
begin
	numberlink:=findnumber(head);
	temp:=head;
	for i:=1 to (numberlink div 2) do
		temp:=temp^.next;
	for i:=1 to n do
	begin
		addfin(temp);
	end;
end;

procedure del(var head:link; n:integer);
var i: integer;
    temp:link;
begin
	temp:=head;
	if n=1 then
	begin
		(temp^.prev)^.next:=temp^.next;
		(temp^.next)^.prev:=temp^.prev;
		head:=temp^.next
	end
	else
	begin
		for i:=1 to n-1 do 
			temp:=temp^.next;
		(temp^.prev)^.next:=temp^.next;
		(temp^.next)^.prev:=temp^.prev;
	end;
end;

procedure view(head:link);
var temp:link;
begin
	writeln;
	temp:=head;
	writeln('the list is');
	repeat
		writeln(temp^.number);
		temp:=temp^.next;
	until temp=head;
end;

begin
    head:=nil;
    choise:=1;
    while choise <> 0 do
    begin
	writeln;
	writeln('type 1 to create list');
	writeln('type 2 to add n records to end');
	writeln('type 3 to add n records to middle');
	writeln('type 4 to view list');
	writeln('type 5 to delete record');
	writeln('type 0 to exit');
	readln(choise);
	case choise of 
	1: create(head);
	2: begin
		writeln('input number of records');
		readln(number);
		for i:=1 to number do addfin(head);
	   end;
	3: begin
		writeln('input number of records');
		readln(number);
		addmed(head,number);
	   end;
	4: view(head);
	5: begin
		writeln('input number of record');
		readln(number);
		del(head,number);
	   end;
	else begin 
		if choise <> 0 then
		writeln('you pressed wrong key')
		else writeln('thank you for using this programm');
	     end;
	end; {case}
    end;
end.