> php教程 > PHP源码 > 본문

单链表英语单词统计(列出所有单词及其出现次数)

WBOY
풀어 주다: 2016-06-16 08:39:32
원래의
1777명이 탐색했습니다.
跳至 [1] [全屏预览]
  <meta charset="utf-8" />
<?
/**
 * The class LinkedList allows an application to store strings in
 * alphabetical order by calling orderInsert().
 * 此处定义的 LinkedList 类,可以调用它的 方法 orderInsert(),来以字母
 * 大小的顺序储存 英文字符串。
 * The frequency for each word is also provided.
 * 同时记录 英文单词出现的次数
 * 作者: 许同春 author Tongchun Xu 
 * @开源中国 Open Source, China communiity
 * 完成日期:2016年6月11日 completion date: 11 June, 2016
 */
class Node{
    public $data;
	public $frequency;
    public $next;
    function __construct($data, $next = null, $frequency = 1){
        $this->data = $data; //英文字符串
        $this->next = $next; //指向后继结点的指针
		$this->frequency=$frequency; //英文字符串出现的次数
    }    
}

class LinkedList{
    private $head; //单链表的头结点,不存储数据
 function __construct(){//单链表的构造方法
 	//头结点的数据为"傀儡", 不代表 任何数据
    $this->head = new Node("dummy 傀儡"); 
    $this->first = null;
    }

 function isEmpty(){ 
        return ($this->head->next == null);
    }	
/*	orderInsert($data) 方法, 
 *  按给定字符串 $data 的大小, 将其安插到适当的位置,	
 *  以保证单链表中字符串的存储,始终是有序的。 
 */
 function orderInsert($data){
	$p = new Node($data);	
    if($this->isEmpty()){
        $this->head->next = $p;
    }
    else {
	$node= $this->find($data);
	if(!$node){
    $q = $this->head;
    while($q->next != NULL && strcmp($data, $q->next->data)> 0 ){
    $q = $q->next;
		}
        $p->next = $q->next; 
		$q->next = $p;
    }else
	$node->frequency++;
	}
 }

 function find($value){//查询是否有给定的字符串
        $q = $this->head->next;
        while($q->next != null){
        if(strcmp($q->data,$value)==0){
				break;
			}
            $q = $q->next;    
        }
		if ($q->data == $value)
        return $q; 
		else
		return null;
    }

 function traversal(){//遍历单链表
		if(!$this->isEmpty()){
        $p=$this->head->next;
        echo $p->data."(".$p->frequency.") ";
        while($p->next != null){
			$p=$p->next;
			echo $p->data."(".$p->frequency.") ";
			}			
    	}else
		echo "链表为空!";
	}
} 

$ll = new LinkedList();
$city =array("Wuhan", "Beijing", "Shanghai","Thunder Bay",
 "Tianjin", "Changsha", "Kunming", "Edmonton", "Glasgow",
 "Gongyi","Tokyo","New York","Ottawa","Moskow","Edmonton",
 "Glasgow","Edinburgh","Thunder Bay","New Delhi","Edinburgh",
  "Edmonton", "Glasgow", "Edmonton","Glasgow"); 
for ($i=0;$i<count($city);$i++)
$ll->orderInsert($city[$i]);
$ll->traversal();
?>
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!