<?php

/*
* 线性顺序表 ,其是按照顺序在内存进行存储,出起始和结尾以外都是一一连接的(一般都是用一维数组的形式表现)
*
* GetElem: 返回线性表中第$index个数据元素
* ListLength: 返回线性表的长度
* LocateElem: 返回给定的数据元素在线性表中的位置
* PriorElem: 返回指定元素的前一个元素
* NextElem: 返回指定元素的后一个元素
* ListInsert: 在第index的位置插入元素elem
* ListDelete: 删除第index位置的元素elem
*/ class Sequence { public $seqArr;
public $length; public function __construct($arr) {
$this->seqArr = $arr;
$this->length = count($arr);
} /*
* 返回线性表中第$index个数据元素
*/ public function GetElem($index) {
if (($this->length) == 0 || $index < 0 || ($index > $this->length)) {
return "Error";
}
return $this->seqArr[$index - 1];
} /*
* 返回线性表的长度
*
*/ public function ListLength() {
return $this->length;
} /*
* 返回给定的数据元素在线性表中的位置
*/ public function LocateElem($elem) {
for ($i = 0; $i < ($this->length); $i++) {
if (($this->seqArr[$i]) == $elem) {
return $i + 1;
}
}
} /*
* PriorElem: 返回指定元素的前一个元素
*/ public function PriorElem($elem) {
for ($i = 0; $i < ($this->length); $i++) {
if (($this->seqArr[$i]) == $elem) {
if ($i == 0) {
return "Error (is null) ";
} else {
return $this->seqArr[$i - 1];
}
}
}
} /*
* NextElem: 返回指定元素的后一个元素
*/ public function NextElem($elem) {
for ($i = 0; $i < ($this->length); $i++) {
if (($this->seqArr[$i]) == $elem) {
return $this->seqArr[$i + 1];
}
}
} /*
* ListInsert: 在第index的位置插入元素elem
*/ public function ListInsert($index, $elem) {
if (($this->length) == 0 || $index < 0 || $index > ($this->length)) {
return "Error";
}
for ($i = $index; $i < ($this->length); $i++) {
$this->seqArr[$i + 1] = $this->seqArr[$i];
}
$this->seqArr[$index] = $elem;
$this->length = $this->length + 1;
return $this->seqArr;
} /*
* ListDelete: 删除第index位置的元素
*/ public function ListDelete($index) {
if (($this->length) == 0 || $index < 0 || $index > ($this->length - 1)) {
return "Error";
}
unset($this->seqArr[$index]);
$this->length--;
return $this->seqArr;
} } ?>

  

php 顺序线性表的更多相关文章

  1. 顺序线性表之大整数求和C++

    顺序线性表之大整数求和 大整数求和伪代码 1.初始化进位标志 flag=0: 2.求大整数 A 和 B 的长度: int aLength = a.GetLength(); int bLength = ...

  2. 顺序线性表 ---- ArrayList 源码解析及实现原理分析

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...

  3. 线性表&顺序线性表

    第二章 线性表 参考文献:[数据结构(C语言版)].严蔚敏 本篇章仅为个人学习数据结构的笔记,不做任何用途. 2.1 线性结构的特点 (1). 存在唯一的一个被称为"第一个"的数据 ...

  4. 顺序线性表之大整数求和C++实现

    顺序线性表之大整数求和 大整数求和伪代码 1.初始化进位标志 flag=0: 2.求大整数 A 和 B 的长度: int aLength = a.GetLength(); int bLength = ...

  5. C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作

    1.数据结构-顺序线性表的实现-C语言 #define MAXSIZE 100 //结构体定义 typedef struct { int *elem; //基地址 int length; //结构体当 ...

  6. 动态分配的顺序线性表的十五种操作—C语言实现

    线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

  7. 数据结构 - 静态顺序线性表的实行(C语言)

    数据结构 - 静态顺序线性表的实行(C语言) 1 获取元素操作 对于线性表的顺序存储结构来说,如果我们要实现GetElem操作,即将线性表L中的第i个位置元素值返回,其实是非常简单的. 只要i的数值在 ...

  8. 数据结构算法C语言实现(一)---2.2线性表的顺序表示和实现

    注意: 虽然是用C语言实现,但是考虑到使用了一个C++的特性----引用以简化代码,所以所有的代码均以cpp作为后缀,用g++编译(以后不做说明). g++版本: 一.简述 本节主要讲述线性表的顺序实 ...

  9. 线性表之顺序表C++实现

    线性表之顺序表 一.头文件:SeqList.h //顺序线性表的头文件 #include<iostream> ; //定义顺序表SeqList的模板类 template<class ...

随机推荐

  1. 分布式爬虫搭建系列 之一------python安装及以及虚拟环境的配置及scrapy依赖库的安装

    python及scrapy框架依赖库的安装步骤: 第一步,python的安装 在Windows上安装Python 首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Pyt ...

  2. Oracle 10g RAC全库flashback

    因业务原因,今天需要做一次全库flashback.以下是操作全过程: 1.确认主库是否能flashback到需要的时间点 在节点1上执行: SQL> alter session set nls_ ...

  3. 问题:web.net页面超时;结果:设置ASP.NET页面的运行超时时间详细到单个页面及站点

    设置ASP.NET页面的运行超时时间详细到单个页面及站点 这篇文章主要介绍了如何设置ASP.NET页面的运行超时时间,包括全局超时时间.单个站点超时时间.单个页面请求超时时间,需要的朋友可以参考下 全 ...

  4. Android Tombstone 分析

    1.什么是tombstone 当一个动态库(native 程序)开始执行时,系统会注册一些连接到 debuggerd 的 signal handlers,当系统 crash 的时候,会保存一个 tom ...

  5. DAY10-python并发编程之携程

    一.引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去 ...

  6. lucene 5.2.0学习笔记

    package com.bc.cas.manager; import com.bc.cas.dao.BookDao; import com.bc.cas.model.entity.Book; impo ...

  7. linux ORACLE备份还原(EXP\IMP)

    一.Oracle导入导出 1.Oracle的备份是Oracle操作中常见的工作,常见的备份方案有:逻辑备份(IMP&EXP命令进行备份).物理文件备份(脱机及联机备份).利用RMAN(Reco ...

  8. GBK、GB2312和UTF-8编码区分

    GBK包含全部中文字符, GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对 ...

  9. css中字间距调整(转)

    css中字间距调整 (2014-01-02 13:51:07) 标签: 汉字 英文 间距 letter-spacing word-spacing 杂谈 分类: 网页制作 汉字间字间距设置:letter ...

  10. Ros学习调试——rqt_console

    1.rqt_console rqt_console:ROS日志框架(logging framework)的一部分,用来显示节点的输出信息 rqt_logger_level:允许我们修改节点运行时输出信 ...