六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Perl教學 第9篇 關聯(lián)數(shù)組之4

[摘要]2、結(jié)構許多編程語言可以定義結(jié)構(structure),即一組數(shù)據(jù)的集合。結(jié)構中的每個元素有其自己的名字,并通過該名字來訪問。Perl不直接提供結(jié)構這種數(shù)據(jù)結(jié)構,但可以用關聯(lián)數(shù)組來模擬。例如模擬C語言中如下的結(jié)構:struce{int field1;int field2;int field3; }...
2、結(jié)構
許多編程語言可以定義結(jié)構(structure),即一組數(shù)據(jù)的集合。結(jié)構中的每個元素有其自己的名字,并通過該名字來訪問。
Perl不直接提供結(jié)構這種數(shù)據(jù)結(jié)構,但可以用關聯(lián)數(shù)組來模擬。例如模擬C語言中如下的結(jié)構:

struce{
int field1;
int field2;
int field3; }mystructvar;
我們要做的是定義一個含有三個元素的關聯(lián)數(shù)組,下標分別為field1、field2、field3,如:

%mystructvar = ("field1" , "" ,
"field2" , "" ,
"field3" , "" ,);
像上面C語言的定義一樣,這個關聯(lián)數(shù)組%mystrctvar有三個元素,下標分別為field1、field2、field3,各元素初始值均為空串。對各元素的訪問和賦值通過指定下標來進行,如:
$mystructvar{"field1"} = 17;
3、樹
另一個經(jīng)常使用的數(shù)據(jù)結(jié)構是樹。樹與鏈表類似,但每個節(jié)點指向的元素多于一個。最簡單的樹是二叉樹,每個節(jié)點指向另外兩個元素,稱為左子節(jié)點和右子節(jié)點(或稱孩子),每個子節(jié)點又指向兩個孫子節(jié)點,依此類推。
注:此處所說的樹像上述鏈表一樣是單向的,每個節(jié)點指向其子節(jié)點,但子節(jié)點并不指向父節(jié)點。
樹的概念可以如下描述:


·因為每個子節(jié)點均為一個樹,所以左/右子節(jié)點也稱為左/右子樹。(有時稱左/右分支)
·第一個節(jié)點(不是任何節(jié)點的子節(jié)點的節(jié)點)稱為樹的根。
·沒有孩子(子節(jié)點)的節(jié)點稱為葉節(jié)點。
有多種使用關聯(lián)數(shù)組實現(xiàn)樹結(jié)構的方法,最好的一種應該是:給子節(jié)點分別加上left和right以訪問之。例如,alphaleft和alpharight指向alpha的左右子節(jié)點。下面是用此方法創(chuàng)建二叉樹并遍歷的例程:

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: }
結(jié)果輸出如下:

grandchild1
child1
grandchild2
parent
grandchild3
child2
grandchild4
注意函數(shù)print_tree()以次序“左子樹、節(jié)點、右子樹”來輸出各節(jié)點的名字,這種遍歷次序稱為“左序遍歷”。如果把第22行移到19行前,先輸出節(jié)點明,再輸出左子樹、右子樹,則為“中序遍歷”,如果把第22行移到25行后,輸出次序為左子樹、右子樹、節(jié)點,則為“右序遍歷”。
可以用同樣的方法,即連接字符串構成下標,來創(chuàng)建其它的數(shù)據(jù)結(jié)構,如數(shù)據(jù)庫等。




主站蜘蛛池模板: 天天草综合网 | 日本黄视频在线播放 | 色橹橹欧美在线观看视频高清免费 | 青草国产精品久久久久久 | 天堂а√中文在线 | 日本亚洲最大的色成网站www | 日韩欧美一区二区中文字幕 | 亚洲 欧美精品 | 无人码一区二区三区视频 | 手机亚洲第一页 | 人人揉人人人人澡人人 | 四虎影院视频在线观看 | 亚洲天堂视频一区 | 欧美亚洲福利 | 青草免费在线观看 | 日韩在线免费观看视频 | 亚洲免费视频在线观看 | 四虎精品国产一区二区三区 | 天天色综合图片 | 日韩a无v码在线播放免费 | 日本亚洲国产 | 天堂网在线最新版官网 | 一二三四免费高清观看在线观看 | 一级做a爰全过程免费视频毛片 | 欧美一级片网址 | 青青草好| 欧美午夜久久 | 中文字幕高清在线天堂网 | 欧美一级做a爰片免费 | 三级在线国产 | 天天干视频网站 | 亚洲欧美无人区乱码 | 四虎www免费人成 | 日韩专区亚洲国产精品 | 伊人久久大香线蕉综合7 | 中文黄色 | 色资源站 | 在线视频欧美日韩 | 亚洲区色| 亚洲精品免费在线 | 欧美视频免费在线播放 |