您的位置:程序门 -> vb -> 基础类



怎么做字符串链表


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


怎么做字符串链表[已结贴,结贴人:rchu]
发表于:2007-10-11 12:56:00 楼主
我想用vb保存若干个字符串,比如班里学生的姓名和电话号码。用什么数据结构保存,尽可能让程序看起来比较简单易懂?

如果用c++,做一个struct(分别保存姓名和电话号码)和链表是很合适的。vb有类似的办法吗,注意程序要简洁,让人容易看懂。用varptr等等实现链表还是算了。

已知方法或问题:
1.班里学生的个数是预先不知道的
2.如果用redim数组的方法,需要考虑什么时候redim,每次redim多少,程序看起来会比较麻烦
3.如果用一个字符串把所有的信息连接起来,会遇到连接符号在名字里面也可能出现的情况。如用 ¦连接,但也可能姓名里面出现 ¦符号
4.谁知道能不能用collection对象?怎么用?

发表于:2007-10-11 13:05:431楼 得分:0
collection
发表于:2007-10-11 13:13:012楼 得分:20
比如,添加一个类模块:

public   sname   as   string           '姓名
public   sphone   as   string      '电话

'我只是简单示例,类代码你自己完善

窗体:

dim   cls   as   class1
dim   col   as   collection
       
set   cls=new   class1
set   col=new   collection
cls.sname="aa"
cls.sphone="02588863633"
col.add   cls

发表于:2007-10-11 14:43:483楼 得分:0
楼上的,有两个问题。
1.dim   col   as   collection,好像要写成   dim   col   as   new   collection,为什么要加new,我不知道。我对c++很熟,但是vb实在不熟。
2.如果只为两个字符串,写一个专门的class,别人好像不太容易看,能不能用type解决,怎么解决?  
发表于:2007-10-11 14:53:084楼 得分:20
1.
new是实例化对象,声明时没有实例化,使用的时候用下面的语句即可:
set   col=new   collection  
2.
vb6.0中,自定义type不能加入col

发表于:2007-10-11 14:58:495楼 得分:0
自定义type不能加入col,还有什么能加入col呢,麻烦楼上帮人帮到底。
发表于:2007-10-11 15:01:006楼 得分:10
vb6里对应struct的关键字是type.根据你的描述,在vb6里你可以用class封装一个type.如下:


option   explicit

'学生信息
private   type   stdinfo
      id   as   long
      name   as   string
      address   as   string
      '.....
     
end   type


'班级信息
private   type   clsinfo
    number   as   string                       '班级人数
    students()   as   stdinfo
end   type

private   curcls   as   clsinfo


public   function   add(id   as   long,   name   as   string,   address   as   string)   as   string
    '前置断言
    '......
   
    curcls.number   =   curcls.number   +   1
    redim   curcls.students(curcls.number)
   
    '添加操作
    '......
end   function

public   function   del(id   as   long)   as   string
    '删除预处理
    '......
   
    curcls.number   =   curcls.number   -   1
    redim   curcls.students(curcls.number)
 
end   function

public   function   getxxx(id   as   long)   as   string
    '如   getname   \   getaddress   ......
   
end   function
public   function   setxxx(id   as   long)   as   string
    '如   setname   \   setaddress   ......
   
end   function

发表于:2007-10-11 15:08:017楼 得分:0
呵呵,我的建议就是用类,甚至集合也做成集合类,我是比较喜欢这样弄
其它方法我还想不出......
发表于:2007-10-11 15:30:438楼 得分:0
thanks.
发表于:2007-10-11 15:38:279楼 得分:0
不从效率考虑,如果实在不想用类,而且信息比较简单,可以用字符串,比如:

dim   s(2)   as   string
dim   col   as   new   collection
dim   i   as   integer

s(1)   =   "name1,0259899999"       '信息1
s(2)   =   "name2,0234456666"       '信息2

for   i   =   1   to   2
        col.add   s(i)
next

for   i   =   1   to   col.count
        debug.print   col.item(i)
next


快速检索

最新资讯
热门点击