网页设计师联盟

--- 学习、交流、展示、资源

招聘精英个人求职网站发布网友作品网页特效动画欣赏网页素材免费资源源码下载设计软件
作品欣赏       域名申请       虚拟主机
网页设计师

  • 新闻资讯
  • 网页教程
  • 平面教程
  • 程序设计
  • 视频教程
  • Flash教程

网页设计师站提供网页设计程序设计服务 E-mail:liangfeng0526@qq.com

 您当前的位置:首页 > 阅读文章
网页设计师联盟(www.wysjs.cn)欢迎您!
 标题:

Perl教学 第九篇 关联数组之四

2、结构
许多编程语言可以定义结构(structure),即一组数据的集合。结构中的每个元素有其自己的名字,并通过该名字来访问。
Perl不直接提供结构这种数据结构,但可以用关联数组来模拟。例如模拟C语言中如下的结构:

struce{
int field1;
int field2;
int field3; }mystructvar;
我们要做的是定义一个含有三个元素的关联数组,下标分别为field1、field2、field3,如:

%mystructvar = ("field1" , "" ,
"field2" , "" ,
"field3" , "" ,);
像上面C语言的定义一样,这个关联数组%mystrctvar有三个元素,下标分别为field1、field2、field3,各元素初始值均为空串。对各元素的访问和赋值通过指定下标来进行,如:
$mystructvar{"field1"} = 17;
3、树
另一个经常使用的数据结构是树。树与链表类似,但每个节点指向的元素多于一个。最简单的树是二叉树,每个节点指向另外两个元素,称为左子节点和右子节点(或称孩子),每个子节点又指向两个孙子节点,依此类推。
注:此处所说的树像上述链表一样是单向的,每个节点指向其子节点,但子节点并不指向父节点。
树的概念可以如下描述:


·因为每个子节点均为一个树,所以左/右子节点也称为左/右子树。(有时称左/右分支)
·第一个节点(不是任何节点的子节点的节点)称为树的根。
·没有孩子(子节点)的节点称为叶节点。
有多种使用关联数组实现树结构的方法,最好的一种应该是:给子节点分别加上left和right以访问之。例如,alphaleft和alpharight指向alpha的左右子节点。下面是用此方法创建二叉树并遍历的例程:

1 : #!/usr/local/bin/perl
2 :
3 : $rootname = "parent";
4 : %tree = ("parentleft", "child1",
5 : "parentright", "child2",
6 : "child1left", "grandchild1",
7 : "child1right", "grandchild2",
8 : "child2left", "grandchild3",
9 : "child2right", "grandchild4");
10: # traverse tree, printing its elements
11: &print_tree($rootname);
12:
13: sub print_tree {
14: local ($nodename) = @_;
15: local ($leftchildname, $rightchildname);
16:
17: $leftchildname = $nodename . "left";
18: $rightchildname = $nodename . "right";
19: if ($tree{$leftchildname} ne "") {
20: &print_tree($tree{$leftchildname});
21: }
22: print ("$nodename\n");
23: if ($tree{$rightchildname} ne "") {
24: &print_tree($tree{$rightchildname});
25: }
26: }
结果输出如下:

grandchild1
child1
grandchild2
parent
grandchild3
child2
grandchild4
注意函数print_tree()以次序“左子树、节点、右子树”来输出各节点的名字,这种遍历次序称为“左序遍历”。如果把第22行移到19行前,先输出节点明,再输出左子树、右子树,则为“中序遍历”,如果把第22行移到25行后,输出次序为左子树、右子树、节点,则为“右序遍历”。
可以用同样的方法,即连接字符串构成下标,来创建其它的数据结构,如数据库等。

  • (刊登方式:转载   来源:不详   作者:   添加:admin   关键词:)
  • 您已阅读:Perl教学 第九篇 关联数组之四 您还可以继续阅读↓  或 回到首页看看>>>
  • 上一篇Perl教学 第十一篇 文件系统之二

     可以看到,这两行并未按我们想象的顺序存贮,为什么呢?我们来分析一下这段程序。第3行重定向标准输出文件,方法是打开文件file1将它与文件变量STDOUT关联,这也关闭了标准输出文件。第4行重定向标准错误文件,参数>&STDOUT告诉Perl解释器使用已打开并与STDOUT关..

  • 下一篇Perl教学 第六篇 模式匹配之一

    一、简介模式指在字符串中寻找的特定序列的字符,由反斜线包含:/def/即模式def。其用法如结合函数split将字符串用某模式分成多个单词:@array=split(//,$line);二、匹配操作符=~、!~=~检验匹配是否成功:$result=$var=~/abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回..