计算机二级:DELPHI中使用Tlist类的补充学习计算机二级考试
文章作者 100test 发表时间 2009:05:22 12:01:48
来源 100Test.Com百考试题网
2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
今天我就以一个实际的例子讲述如何正确的使用Tlist类。
这个例子是:
有一个链表UserList,这个链表中保存的是用户的信息。在另一个链表CardList,中保存的是用户的牌信息。其中CardList中牌的信息是会随着用户出牌的要求而变化的。但是UserList中的用户信息是不变的。
首先,我们来定义两个结构
//用户信息结构
RuserInfo= record
UserID:String[20].
Sex:Boolean.
Face:Byte.
Score:Integer.
End.
PuserInfo = ^ RuserInfo.
//用户牌对应结构
RuserCardInfo = record
UserInfo: PuserInfo.
CardInfo:String[20].
End.
PuserCardInfo = ^ RuserCardInfo.
下来我们定义两个链表
UserList,CardList:Tlist.
当用户加入这个桌子的时候写入UserList中
Procedure UserInfoFun(UserID:String.Sex:Boolean.Face:Byte.Score:Integer).
Var
p_User:PuserInfo.
begin
New(p_User).
p_User.UserID:= UserID.
p_User.Sex:= Sex.
p_User.Face:= Face.
p_User.Score:= Score.
UserList.Add(p_User).
……
End.
当给用户发牌的时候
Procedure UserCardInfoFun(UserID:String).
Var
p_Card: PuserCardInfo
p_User:PuserInfo.
I,Count:Integer.
Flag:Boolean.
Begin
//首先从用户链表中找出此用户的信息
Count:= UserList.Count.
Flag:=false.
For I:=0 to Count-1 do
Begin
p_User:= UserList.Item[I].
If UserID = UserID then
Begin
Flag:=true.
Break.
End.
End.
//新生成一个用户牌信息指针,并加入到牌信息链表中
If Flag then
Begin
New(p_Card).
p_Card. CardInfo:=’H1H2H3H4’.
p_Card. UserInfo^:= p_User^.
CardList.Add(p_Card).
End.
End.
当要从链表中删除用户出牌信息时
Procedure DelUserCardInfoFun(UserID:String).
Var
p_Card: PuserCardInfo.
I,Count:Integer.
Begin
Count:= CardList.Count.
For I:=0 to Count-1 do
Begin
p_Card:= CardList.Item[I].
If p_Card. UserInfo.UserID = UserID then
Begin
CardList.Delete(I).
DisPose(p_Card).
Exit.
End.
End.
End.
需要注意的是,我在加入牌信息的时候使用了p_Card. UserInfo^:= p_User^.方法。这个方法是将p_User的内容直接复制给p_Card. UserInfo。也就是说,现在有两份用户信息。所以在后面删除用户牌信息的时候,我直接使用了DisPose函数来销毁。
其实上面的例子是一个很简单的例子,我想用它作为以前我写的文章的一个补充。希望能对大家使用Tlist有个帮助。
特别推荐:
2009年9月全国计算机等级考试时间及科目预告