> 백엔드 개발 > PHP 튜토리얼 > PHP는 선형 테이블의 순차 저장 구조를 구현합니다.

PHP는 선형 테이블의 순차 저장 구조를 구현합니다.

WBOY
풀어 주다: 2016-07-30 13:31:09
원래의
1242명이 탐색했습니다.

<code><span><span>class</span><span>SqList</span>
{</span><span>public</span><span>$elem</span>;
    <span>public</span><span>$length</span>;
    <span>public</span><span>$size</span>;
}

<span><span>class</span><span>Linear</span>
{</span><span>const</span> LIST_INIT_SIZE = <span>10</span>;
    <span>const</span> LIST_INCREMENT = <span>5</span>;
    <span>private</span><span>$list</span> = <span>null</span>;

    <span>/**
     * 构造一个空的线性表
     */</span><span>public</span><span><span>function</span><span>initList</span><span>()</span>
    {</span><span>$this</span>-><span>list</span> = <span>new</span> SqList();
        <span>$this</span>-><span>list</span>->elem = <span>array</span>();
        <span>$this</span>-><span>list</span>->length = <span>0</span>;
        <span>$this</span>-><span>list</span>->size = <span>self</span>::LIST_INIT_SIZE;
        <span>return</span><span>true</span>;
    }

    <span>/**
     * 销毁线性表
     */</span><span>public</span><span><span>function</span><span>destoryList</span><span>()</span>
    {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
            <span>$this</span>-><span>list</span> = <span>null</span>;
        }
    }

    <span>/**
     * 是否为空表
     */</span><span>public</span><span><span>function</span><span>listEmpty</span><span>()</span>
    {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
            <span>return</span><span>$this</span>-><span>list</span>->length == <span>0</span> ? <span>true</span> : <span>false</span>;
        }
    }

    <span>/**
     * 返回元素个数
     */</span><span>public</span><span><span>function</span><span>listLength</span><span>()</span>
    {</span><span>if</span> (is_object(<span>$this</span>-><span>list</span>)) {
            <span>return</span><span>$this</span>-><span>list</span>->length;
        }
    }

    <span>/**
     * 获取指定位置的元素
     */</span><span>public</span><span><span>function</span><span>getElem</span><span>(<span>$i</span>)</span>
    {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length + <span>1</span>) {
            <span>return</span><span>false</span>;
        }
        <span>return</span><span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>];
    }

    <span>/**
     * 在指定位置插入元素
     */</span><span>public</span><span><span>function</span><span>listInsert</span><span>(<span>$i</span>, <span>$e</span>)</span>
    {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length + <span>1</span>) {
            <span>return</span><span>false</span>;
        }
        <span>if</span> (<span>$this</span>-><span>list</span>->length >= <span>$this</span>-><span>list</span>->size) {
            <span>$this</span>-><span>list</span>->size += <span>self</span>::LIST_INCREMENT;
        }
        <span>for</span> (<span>$j</span> = <span>$this</span>-><span>list</span>->length; <span>$j</span> >= <span>$i</span>; <span>$j</span>--) {
            <span>$this</span>-><span>list</span>->elem[<span>$j</span>] = <span>$this</span>-><span>list</span>->elem[<span>$j</span>-<span>1</span>];
        }
        <span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>] = <span>$e</span>;
        <span>$this</span>-><span>list</span>->length++;
    }

    <span>/**
     * 删除指定位置数据元素
     */</span><span>public</span><span><span>function</span><span>listDelete</span><span>(<span>$i</span>)</span>
    {</span><span>if</span> (<span>$i</span> < <span>1</span> || <span>$i</span> > <span>$this</span>-><span>list</span>->length) {
            <span>return</span><span>false</span>;
        }
        <span>$data</span> = <span>$this</span>-><span>list</span>->elem[<span>$i</span>-<span>1</span>];
        <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>++) {
            <span>$this</span>-><span>list</span>->elem[<span>$j</span>] = <span>$this</span>-><span>list</span>->elem[<span>$j</span>+<span>1</span>];
        }
        <span>unset</span>(<span>$this</span>-><span>list</span>->elem[<span>$this</span>-><span>list</span>->length-<span>1</span>]);
        <span>$this</span>-><span>list</span>->length--;
        <span>return</span><span>$data</span>;
    }
}</code>
로그인 후 복사

저작권: 이 글은 블로거의 원본 글이므로 블로거의 허락 없이 복제할 수 없습니다.

위 내용은 PHP로 구현된 선형 테이블의 순차 저장 구조를 그 내용과 함께 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿