人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

Perl教學 第9篇 關聯數組之4

Perl教學 第9篇 關聯數組之4

更新時間:2022-08-24 文章作者:未知 信息來源:網絡 閱讀次數:

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行后,輸出次序為左子樹、右子樹、節點,則為“右序遍歷”。
可以用同樣的方法,即連接字符串構成下標,來創建其它的數據結構,如數據庫等。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 梨树县| 镇沅| 宁海县| 巨鹿县| 墨脱县| 蒲江县| 鄂温| 蒙山县| 瓦房店市| 琼海市| 勐海县| 萨嘎县| 泉州市| 溆浦县| 射洪县| 高唐县| 灌阳县| 海安县| 石台县| 永宁县| 大余县| 铜陵市| 新建县| 恩平市| 广河县| 抚宁县| 绿春县| 通海县| 柘荣县| 蓬莱市| 红桥区| 区。| 林口县| 神池县| 白玉县| 凤城市| 庆安县| 大竹县| 江津市| 鄢陵县| 临安市|