博文

[数据结构]C++队列实现和队列简介(2006-08-23 17:27:00)

摘要:队列简介: 队列(Queue)是一种数据结构,可以在队列的一端插入元素而在队列的另一端删除元素。 ( 1 )允许删除的一端称为 队头( Front ) 。
  ( 2 )允许插入的一端称为 队尾( Rear ) 。
  ( 3 )当队列中没有元素时称为 空队列 。
  ( 4 )队列亦称作先进先出( First In First Out )的线性表,简称为 FIFO 表 。 队列的修改是依先进先出的原则进行的。新来的成员总是加入队尾(即不允许 " 加塞 " ),每次离开的成员总是队列头上的(不允许中途离队),即当前 " 最老的 " 成员离队。 多任务系统是一个典型的队列示例,在其中完成作业的调度。假设有五个程序等待执行, 它们将被放入一个队列,如果有第六个程序要执行,它将被放在队列的末尾。队列中首位的程序首先执行。   队列实现: /* (1)initQueue(Q)
  置空队。构造一个空队列Q。 (2)isEmpty(Q)
  判断队列是否空。若队列Q为空,则返回真值,否则返回假值。
 
(3)isFull(Q)
   判断队列是否以满, 以满返回true, 没满则返回flase (4) addQueue(Q,x)
  若队列Q非满,则将元素x插入Q的队尾。此操作简称 入队 。 (5) DelQueue(Q)
  若队列Q非空,则删去Q的队头元素,并返回该元素。此操作简称 出队 。 (6) queueFront(Q)
  若队列Q非空,则返回队头元素,但不改变队列Q的状态。 (7) queueDisplay(Q)
  显示队列中的元素。
*/ #include "iostream.h" #define maxSize 10  // 存储数据大小, 可以随便设定值 struct Queue
{
 int data[maxSize];
 int front;  // 队首 
 int rear;  // 队尾
}; void initQueue( Queue......

阅读全文(15611) | 评论:0

[技术]拥有自己的站内搜索引擎(2006-05-29 23:27:00)

摘要:                                    拥有自己的站内搜索引擎   若想在某特定网站内搜索特定的内容(如搜索www.cfan.com.cn中包含关键字"网络"的内容),只需要在Google的搜索栏里输入:"网络 site:cfan.com.cn"即可(不含引号)。如果直接在自己站点的网页上建立一个Google的搜索栏,然后让访问者按Google规定的格式进行查询,那不就能实现Google作为自己站内搜索引擎的功能了吗?但是我们当然不能要求使用者还要特地学习Google对特定网站搜索的格式规范。于是笔者立刻联想到是否可以使用JavaScript脚本使得Google接收的查询关键字后自动加上类似"site: cfan.com.cn"的字符串呢?答案当然是肯定的。在你的网站首页需要放置站内搜索引擎页面的<body>标签的范围内放置如下代码:

  <script type="text/javascript">
  var domainroot="mysite.com"//个人站点域名,替换成你的网站的网址即可
  function Gsitesearch(curobj){
  curobj.q.value="site:"+domainroot+" "+curobj.qfront.value
  }
  </script>
  <form action="http://www.Google.com/search" method="get" onSubmit="Gsitesearch(this)">
  <p>站内搜索:<br />
  <input name="q" type="hidden" />
  <input name="qfront" type="text" style="width......

阅读全文(4140) | 评论:1

[原理]中文搜索引擎技术揭密:网络蜘蛛(转)(2006-05-29 23:24:00)

摘要:                中文搜索引擎技术揭密:网络蜘蛛        随着搜索经济的崛起,人们开始越加关注全球各大搜索引擎的性能、技术和日流量。作为企业,会根据搜索引擎的知名度以及日流量来选择是否要投放广告等;作为普通网民,会根据搜索引擎的性能和技术来选择自己喜欢的引擎查找资料;作为学者,会把有代表性的搜索引擎作为研究对象……

  而作为一个网站的经营者,其更关心的或许是如何通过网络载体让更多的网民知道自己的网站,进而获得更高的流量和知名度。这其中,搜索引擎已经成了一个重要的且是**的宣传途径。一方面,搜索引擎会主动出击,寻找网络上的各种网页数据,并在后台按相关条件进行索引;另一方面,各大网站为了能让自己的内容更多的通过搜索引擎向网民展示,都开始对网站结构进行重大调整,其中包括扁平化结构设计、动态(网页)转静态(网页)、Sitemap等。

  这些看来不经意的举动都让我们切身感受到搜索引擎对我们网络使用方式的改变起到了重要作用。并且,正因为搜索引擎的兴起以及社会各界对其重视程度日渐高涨,还由此创造了一个全新的职位——SEO。实际上,搜索引擎经济的崛起,又一次向人们证明了网络所蕴藏的巨大商机。网络离开了搜索将只剩下空洞杂乱的数据,以及大量等待去费力挖掘的金矿。

  搜索引擎一直专注于提升用户的体验度,其用户体验度则反映在三个方面:准、全、快。用专业术语讲是:查准率、查全率和搜索速度(即搜索耗时)。其中最易达到的是搜索速度,因为对于搜索耗时在1秒以下的系统来说,访问者很难辨别其快慢了,更何况还有网络速度的影响。因此,对搜索引擎的评价就集中在了前两者:准、全。中文搜索引擎的"准",需要保证搜索的前几十条结果都和搜索词十分相关,这需由"分词技术"和"排序技术"来决定(参考作者相关文章[1][2]);中文搜索引擎的"全"则需保证不遗漏某些重要的结果,而且能找到最新的网页,这需要搜索引擎有一个强大的网页收集器,一般称为"网络蜘蛛",也有叫"网页机器人"。

  研究搜索引擎技术的文章不少,但大部分讨论的是......

阅读全文(4651) | 评论:8

[原理]搜索引擎是如何工作的?(转帖)(2006-05-29 23:21:00)

摘要:       搜索引擎是如何工作的?   我经常会遇到一些不知道 搜索引擎如何收集信息的人。他们知道什么是搜索引擎,而且也理解得到搜索引擎索引的重要性,尽管有些人知道一些,但当你开始谈论诸如爬行程序之类的内容时,他们就开始卡壳了。 不要再出现卡壳这样的尴尬场面了。本文旨在帮你揭示一些你对搜索引擎还不是很肯定的东西。毕竟,如果你想通过得到搜索引擎的收录而受益,你还是了解一下搜索引擎如何工作为好。   合三为一   基于爬行程序的搜索引擎是由三部分组成的:爬行程序、索引和软件。每一部分都具有自己的功能并且三个部分一起产生了我们在搜索引擎结果页面(SERPs)上所看到的内容。
饥饿的爬行程序   另一个广为人知的名字是网络爬行程序或者机器人,搜索引擎爬行程序就是能阅读网页和跟踪站点内到其它网页任何链接的一个自动程序。我们经常将一个称为被"爬行"或"索引"。在网络上有三种非常饥饿、非常活跃的爬行程序。它们的名字为Googlebot(Google)、Slurp( Yahoo!)和MSNBot(MSN 搜索)。   爬行程序会从先前添加到它们索引(数据库)中的系列网页URLs开始网络之旅。在它们访问这些网页时,它们爬行编码和副本,它将在网络上找到的新网页(链接)也添加到它的索引之中。对于这个过程,我们可以将爬行程序称为是正在建立索引,稍后将进一步加以讨论。   爬行程序会根据一个固定的周期回访其目录中的站点,寻找任何的更新。至于爬行程序回访的频率,这要由搜索引擎确定。网站拥有者通过采用一个名为robot.txt的文件确实能控制爬行程序访问这个站点的频率。搜索引擎在进一步爬行一个网站之前首先查看这个文件。   正在成长的索引   索引就像是一个包含爬行程序所找到网站每一个网页和文件副本的巨大目录或者详细目录。如果某一个网页发生了变化,则会使用新的信息来更新这个目录。为了能使一个数量的概念给你描述这些索引的大小,Google最新公布的数字是80亿个网页。   有时候需要一定的时间才能让爬行程序找到新的网页和更改并添加到自己的索引中。由此,一个网页可能已被"爬行"但尚未"索引"。知道一个网页被索引后——添加到索引中——此时在搜索引擎中是搜索不到这些被爬行过的网页的。   搜索引擎的工作模式 ......

阅读全文(3975) | 评论:0