文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 国产软件 | 国外软件 | 汉化补丁 | 设为首页 | 加入收藏
业界资讯 | 图形图像 | 操作系统 | 网络冲浪 | 工具软件 | 办公软件 | 媒体动画 | 精文荟萃 | 认证考试 | 网站建设 | 技术开发 | 专栏
当前位置:abcdown网络学院网络编程CGI/PerlPerl教学 第九篇 关联数组(哈希表)
精品广告
推荐TOP10
·在CGI中如何使用cookie的方法
·CGI脚本在WIN2000、WINNT下安装
阅读TOP10
·Linux系统环境下的Socket编程详细解析
·CGI 安全问题
·用机器生成的音乐监控Linux 计算机
·Perl教学 目录
·Perl教学 第一篇 概述
·Perl教学 第二篇 简单变量
·Perl教学 第三篇 操作符
·Perl教学 第四篇 列表和数组变量
·Perl教学 第五篇 文件读写
·Perl教学 第六篇 模式匹配

Perl教学 第九篇 关联数组(哈希表)

日期:2007年5月10日 作者: 查看:[大字体 中字体 小字体]


56: print ("$pointer\n");
57: $pointer = $wordlist{$pointer};
58: }
59: }
运行结果如下:

Here are some words.
Here are more words.
Here are still more words.
^D
Words in this file:
are
here
more
some
still
words
此程序分为三个部分:


·主程序:读取输入并转换到相应的格式。
·子程序:add_word_to_list,建立排序单词链表。
·子程序:print_list,输出单词链表
第3~17行为主程序,第4行初始化链表,将表头变量$header设为空串,第5行起的循环每次读取一行输入,第7行去掉头、尾的空格,第8行将句子分割成单词。9~15行的内循环每次处理一个单词,如果该单词的最后一个字符是标点符号,就去掉。第13行把单词转换成全小写形式,第14行传递给子程序add_word_to_list。
子程序add_word_to_list先在第24行处检查链表是否为空。如果是,第25行将单词赋给$header,26行创建链表第一个元素,存贮在关联数组%wordlist中。如果链表非空,37行检查第一个元素是否与该单词相同,如果相同,就立刻返回。下一步检查这一新单词是否应该为链表第一个元素,即其按字母顺序先于$header。如果是这样,则:
1、创建一个新元素,下标为该新单词,其值为原第一个单词。
2、该新单词赋给$header。
如果该新单词不该为第一个元素,则40~44行利用局域变量$pointer寻找其合适的有效位置,41~44行循环到$wordlist{$pointer}大于或等于$word为止。接下来46行查看该单词是否已在链表中,如果在就返回,否则47~48行将其添加到链表中。首先47行创建新元素$wordlist{$word},其值为$wordlist{$pointer},这时$wordlist{$word}和$wordlist{$pointer}指向同一个单词。然后,48行将$wordlist{$pointer}的值赋为$word,即将$wordlist{$pointer}指向刚创建的新元素$wordlist{$word}。
最后当处理完毕后,子程序print_list()依次输出链表,局域变量$pointer含有正在输出的值,$wordlist{$pointer}为下一个要输出的值。
注:一般不需要用链表来做这些工作,用sort()和keys()在关联数组中循环就足够了,如:

foreach $word (sort keys(%wordlist)) {
# print the sorted list, or whatever }
但是,这里涉及的指针的概念在其它数据结构中很有意义。
进入讨论组讨论。
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、树
另一个经常使用的数据结构是树。树与链表类似,但每个节点指向的元素多于一个。最简单的树是二叉树,每个节点指向另外两个元素,称为左子节点和右子节点(或称孩子),每个子节点又指向两个孙子节点,依此类推。

上一页 [1] [2] [3] [4] [5] [6] 下一页 

上一篇:Perl教学 第十篇 格式化输出

下一篇:Perl教学 第八篇 子程序


相关软件: 相关文章:
·Perl教学 第九篇 关联数组(哈希表)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
首页 | 本站声明 | 下载帮助 | 发布软件 |
中文版权所有:ABC学院 浙ICP备05000717号