首页 > php教程 > PHP源码 > 单链表英语单词统计(列出所有单词及其出现次数)

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-16 08:39:32
原创
1861 人浏览过
跳至 [1] [全屏预览]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

  <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();

?>

登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板