当前位置:Gxlcms > PHP教程 > PHP实现线性表的顺序存储结构

PHP实现线性表的顺序存储结构

时间:2021-07-01 10:21:17 帮助过:5人阅读

  1. <code><span><span>class</span><span>SqList</span>
  2. {</span><span>public</span><span>$elem</span>;
  3. <span>public</span><span>$length</span>;
  4. <span>public</span><span>$size</span>;
  5. }
  6. <span><span>class</span><span>Linear</span>
  7. {</span><span>const</span> LIST_INIT_SIZE = <span>10</span>;
  8. <span>const</span> LIST_INCREMENT = <span>5</span>;
  9. <span>private</span><span>$list</span> = <span>null</span>;
  10. <span>/**
  11. * 构造一个空的线性表
  12. */</span><span>public</span><span><span>function</span><span>initList</span><span>()</span>
  13. {</span><span>$this</span>-><span>list</span> = <span>new</span> SqList();
  14. <span>$this</span>-><span>list</span>->elem = <span>array</span>();
  15. <span>$this</span>-><span>list</span>->length = <span>0</span>;
  16. <span>$this</span>-><span>list</span>->size = <span>self</span>::LIST_INIT_SIZE;
  17. <span>return</span><span>true</span>;
  18. }
  19. <span>/**
  20. * 销毁线性表
  21. */</span><span>public</span><span><span>function</span><span>destoryList</span><span>()</span>
  22. {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
  23. <span>$this</span>-><span>list</span> = <span>null</span>;
  24. }
  25. }
  26. <span>/**
  27. * 是否为空表
  28. */</span><span>public</span><span><span>function</span><span>listEmpty</span><span>()</span>
  29. {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
  30. <span>return</span><span>$this</span>-><span>list</span>->length == <span>0</span> ? <span>true</span> : <span>false</span>;
  31. }
  32. }
  33. <span>/**
  34. * 返回元素个数
  35. */</span><span>public</span><span><span>function</span><span>listLength</span><span>()</span>
  36. {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
  37. <span>return</span><span>$this</span>-><span>list</span>->length;
  38. }
  39. }
  40. <span>/**
  41. * 获取指定位置的元素
  42. */</span><span>public</span><span><span>function</span><span>getElem</span><span>(<span>$i</span>)</span>
  43. {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length + <span>1</span>) {
  44. <span>return</span><span>false</span>;
  45. }
  46. <span>return</span><span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>];
  47. }
  48. <span>/**
  49. * 在指定位置插入元素
  50. */</span><span>public</span><span><span>function</span><span>listInsert</span><span>(<span>$i</span>, <span>$e</span>)</span>
  51. {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length + <span>1</span>) {
  52. <span>return</span><span>false</span>;
  53. }
  54. <span>if</span> (<span>$this</span>-><span>list</span>->length >= <span>$this</span>-><span>list</span>->size) {
  55. <span>$this</span>-><span>list</span>->size += <span>self</span>::LIST_INCREMENT;
  56. }
  57. <span>for</span> (<span>$j</span> = <span>$this</span>-><span>list</span>->length; <span>$j</span> >= <span>$i</span>; <span>$j</span>--) {
  58. <span>$this</span>-><span>list</span>->elem[<span>$j</span>] = <span>$this</span>-><span>list</span>->elem[<span>$j</span>-<span>1</span>];
  59. }
  60. <span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>] = <span>$e</span>;
  61. <span>$this</span>-><span>list</span>->length++;
  62. }
  63. <span>/**
  64. * 删除指定位置数据元素
  65. */</span><span>public</span><span><span>function</span><span>listDelete</span><span>(<span>$i</span>)</span>
  66. {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length) {
  67. <span>return</span><span>false</span>;
  68. }
  69. <span>$data</span> = <span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>];
  70. <span>for</span> (<span>$j</span> = <span>$i</span> -<span>1</span>; <span>$j</span> < <span>$this</span>-><span>list</span>->length -<span>1</span>; <span>$j</span>++) {
  71. <span>$this</span>-><span>list</span>->elem[<span>$j</span>] = <span>$this</span>-><span>list</span>->elem[<span>$j</span>+<span>1</span>];
  72. }
  73. <span>unset</span>(<span>$this</span>-><span>list</span>->elem[<span>$this</span>-><span>list</span>->length-<span>1</span>]);
  74. <span>$this</span>-><span>list</span>->length--;
  75. <span>return</span><span>$data</span>;
  76. }
  77. }</code>

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP实现线性表的顺序存储结构,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行