مدیریت لیست پیوندی در زبان پاسکال

the_king

مدیرکل انجمن
کد برنامه زیر یک لیست پیوندی را مدیریت می کند :

کد:
program prg;
uses crt;
type
	list=^rec;
	rec=record
		value:string;
		next:list;
	end;
var
	newrec,pastrec,currec,delrec,first,temp:list;
	c:char;
	n,i,position:integer;

procedure add;
begin
	new(newrec);
	write('New String :');
	readln(newrec^.value);
	write('Position :');
	readln(position);
	n:=n+1;
	pastrec:=first;
	for i:=1 to n do
	begin
		if i=position then break;
		if pastrec^.next=nil then break;
		pastrec:=pastrec^.next;
	end;
	newrec^.next:=pastrec^.next;
	pastrec^.next:=newrec;
end;

procedure show;
begin
	pastrec:=first;
	while (pastrec^.next<>nil) do
	begin
		pastrec:=pastrec^.next;
		writeln (pastrec^.value);
	end;
	readkey;
end;

procedure del;
begin
	write('String for Del :');
	readln(delrec^.value);
	pastrec:=first;
	while (pastrec^.next<>nil) do
	begin
		temp:=pastrec;
		pastrec:=pastrec^.next;
		if pastrec^.value=delrec^.value then
		begin
			n:=n-1;
			temp^.next:=pastrec^.next;
			dispose(pastrec);
		end;
	end;
end;

begin
	first^.next:=nil;
	repeat
		clrscr;
		writeln('1) ADD   2) DEL   3) LIST   4) EXIT');
		c:=readkey;
		case c of
			'1' : add;
			'2' : del;
			'3' : show;
		end;
	until (c='4');
	pastrec:=first;
	while (pastrec^.next<>nil) do
	begin
		pastrec:=pastrec^.next;
		temp:=pastrec;
		dispose(temp);
	end;
end.
 

جدیدترین ارسال ها

بالا