日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStackT

發布時間:2024/4/14 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStackT 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TQueue 和 TStack, 一個是隊列列表, 一個是堆棧列表; 一個是先進先出, 一個是先進后出.

TStack 主要有三個方法、一個屬性:
Push(壓棧)、Pop(出棧)、Peek(查看下一個要出棧的元素);
Count(元素總數).

?

pas
unit?Unit1;

interface

uses
??Windows,?Messages,?SysUtils,?Variants,?Classes,?Graphics,?Controls,?Forms,
??Dialogs,?StdCtrls;

type
??TForm1?
=?class(TForm)
????Memo1:?TMemo;
????Button1:?TButton;
????Button2:?TButton;
????Button3:?TButton;
????
procedure?FormCreate(Sender:?TObject);
????
procedure?FormDestroy(Sender:?TObject);
????
procedure?Button1Click(Sender:?TObject);
????
procedure?Button2Click(Sender:?TObject);
????
procedure?Button3Click(Sender:?TObject);
??
end;

var
??Form1:?TForm1;

implementation

{$R?*.dfm}

uses?Generics.Collections;?{Delphi?2009?新增的泛型容器單元}

type
??TRec?
=?record
????Name:?
string;
????Age:?Word;
??
end;

var
??Stack:?TStack
<TRec>;??{定義一個泛型?TStack?類,?這指定了要用于上面定義的?TRec?記錄}

{建立}
procedure?TForm1.FormCreate(Sender:?TObject);
begin
??Stack?:
=?TStack<TRec>.Create;

??Memo1.Clear;
??Button1.Caption?:
=?Button1.Caption?+?'?壓棧';
??Button2.Caption?:
=?Button2.Caption?+?'?出棧';
??Button3.Caption?:
=?Button3.Caption?+?'?下一個出棧的';
end;

{釋放}
procedure?TForm1.FormDestroy(Sender:?TObject);
begin
??Stack.Free;
end;

{壓棧:?Push}
procedure?TForm1.Button1Click(Sender:?TObject);
var
??rec:?TRec;
begin
??rec.Name?:
=?StringOfChar(Char(65?+?Random(26)),?3);
??rec.Age?:
=?Random(150);
??Stack.Push(rec);
??Text?:
=?Format('當前隊列成員總數:?%d',?[Stack.Count]);

??
{讓?Memo1?配合顯示}
??Memo1.Lines.Add(Format(
'%s,?%d',?[rec.Name,?rec.Age]));
end;

{出棧:?Pop}
procedure?TForm1.Button2Click(Sender:?TObject);
var
??rec:?TRec;
begin
??
if?Stack.Count?=?0?then?Exit;
??rec?:
=?Stack.Pop;
??ShowMessage(Format(
'%s,?%d',?[rec.Name,?rec.Age]));
??Text?:
=?Format('當前隊列成員總數:?%d',?[Stack.Count]);

??
{讓?Memo1?配合顯示}
??Memo1.Lines.Delete(Memo1.Lines.Count?
-?1);
end;

{下一個出列的的元素:?Peek}
procedure?TForm1.Button3Click(Sender:?TObject);
var
??rec:?TRec;
begin
??
if?Stack.Count?=?0?then?Exit;
??rec?:
=?Stack.Peek;
??ShowMessage(Format(
'%s,?%d',?[rec.Name,?rec.Age]));
end;

end.

?

?

?

dfm
object?Form1:?TForm1
??Left?
=?0
??Top?
=?0
??Caption?
=?'Form1'
??ClientHeight?
=?147
??ClientWidth?
=?284
??Color?
=?clBtnFace
??Font.Charset?
=?DEFAULT_CHARSET
??Font.Color?
=?clWindowText
??Font.Height?
=?-11
??Font.Name?
=?'Tahoma'
??Font.Style?
=?[]
??OldCreateOrder?
=?False
??Position?
=?poDesktopCenter
??OnCreate?
=?FormCreate
??OnDestroy?
=?FormDestroy
??PixelsPerInch?
=?96
??TextHeight?
=?13
??
object?Memo1:?TMemo
????Left?
=?0
????Top?
=?0
????Width?
=?121
????Height?
=?147
????Align?
=?alLeft
????Font.Charset?
=?DEFAULT_CHARSET
????Font.Color?
=?clWindowText
????Font.Height?
=?-13
????Font.Name?
=?'Courier?New'
????Font.Style?
=?[]
????Lines.Strings?
=?(
??????
'Memo1')
????ParentFont?
=?False
????ScrollBars?
=?ssBoth
????TabOrder?
=?0
??
end
??
object?Button1:?TButton
????Left?
=?127
????Top?
=?21
????Width?
=?146
????Height?
=?25
????Caption?
=?'Button1'
????TabOrder?
=?1
????OnClick?
=?Button1Click
??
end
??
object?Button2:?TButton
????Left?
=?127
????Top?
=?61
????Width?
=?146
????Height?
=?25
????Caption?
=?'Button2'
????TabOrder?
=?2
????OnClick?
=?Button2Click
??
end
??
object?Button3:?TButton
????Left?
=?127
????Top?
=?99
????Width?
=?146
????Height?
=?25
????Caption?
=?'Button3'
????TabOrder?
=?3
????OnClick?
=?Button3Click
??
end
end

?

總結

以上是生活随笔為你收集整理的四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStackT的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。