http://decomo.info/wiki/" /> クソゲ〜製作所 - Pascalによるキューの実装

クソゲ~製作所

新システムに移行中:http://decomo.info/wiki/

« 某所にてキリ番踏みました | メイン | クレジットカードの支払い »
スポンサーリンク

2005年06月06日

 

Pascalによるキューの実装

 

まぁ、タイトルは大層な名前が付いてますが、大した事はありません。Pascalで書いたヘタレキュープログラムです。


program Queue;

const
   NUMBER_OF_CHAR = 200;

type
   CharArray = array[1..NUMBER_OF_CHAR] of char;

{ ************************************
   Proce. queue_init : キューの初期化
  ************************************ }
procedure queue_init(	       
		     var last : integer );
begin			       
   last := 0;
end; { queue_init }

{ **********************************
   Proce. put : キューに1文字入れる
  ********************************** }
procedure put(		
	       var data	: CharArray;
	       var last	: integer;
		   ch	: char
		   );
begin
   last := last + 1;
   if ( last > NUMBER_OF_CHAR)
      then begin
	 last := last - 1;
	 writeln(' -> Queue overflow.');
      end
      else begin
	 data[last] := ch;
	 writeln(' -> OK:Put "', data[last] ,'" into queue.');
      end;
end; { put }

{ **************************************
   Proce. get : キューから1文字取り出す
  ************************************** }
procedure get(	       
	      var data : CharArray;
	      var last : integer;
	      var ch   : char
		  );
var
   i : integer;

begin
   ch := data[1];

   { キューを詰める }
   for i:=2 to last do begin
      data[i-1] := data[i];
   end;
   last := last -1;
end; { get }

{ *************************************
   Func. test_empty : キューが空か否か
  ************************************* }
function test_empty(	   
		    last : integer ) : boolean;
begin
   test_empty := ( last = 0 );
end; { test_empty }

{ ******
   Main
  ***** }
begin
var queue_data : CharArray;
var ch : char;
var last : integer;

   queue_init(last);
   writeln('Input small alphabets');
   readln(ch);
   while ( ch <> 'z' ) do begin
      if ( ch < 'h' ) then begin
	 put( queue_data, last, ch );
      end
      else begin
	 if (not test_empty(last)) then begin
	    get( queue_data, last, ch );
	    writeln(' -> OK:Get "', ch ,'" from queue.');
	 end
	 else begin
	    writeln(' -> No data in queue.');
	 end;
      end;
      readln(ch);
   end;
end.
※初掲載時のプログラムは大嘘だったので、修正版に差し替えました。

簡単に解説すると、アルファベットのa?gを入力すると、該当アルファベットのキューへの貯め込み、同様にh?yでキューの表示、zでプログラムの終了が行えます。

まぁ、詳しくは解析して下さい(ぉ

Decomo | 02:27

トラックバック

 

■このエントリーのトラックバックアドレス:
http://www.decomo.info/cgi-php/mt/mt-KusoGA-gattsuIshimatsu.cgi/98


■このエントリーのアドレス:
http://decomo.info/mt/archives/2005/200506060227.shtml

 

コメント

 
 

コメントをどうぞ...

 






保存しますか?