博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.1 线性表的顺序存储结构
阅读量:4965 次
发布时间:2019-06-12

本文共 2349 字,大约阅读时间需要 7 分钟。

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

优点:

(1)无需为表中元素之间的逻辑关系而增加额外的存储空间

(2)可以快速的存取表中的任一位置的元素

缺点:

(1)插入和删除需要移动大量元素

(2)当线性表长度变化较大时,难以确定存储空间的容量

(3)造成存储空间的“碎片”

 下面用php实现线性表的顺序存储结构

linner_list =$linner_list; $this->size = $size; }//2.清空顺序表 clearList()public function clearList(){ if(isset($this->linner_list)){ unset($this->linner_list); }else{ $this->linner_list = array(); $this->size=0; }}//3.根据下标返回顺序表中的某个元素 getElement()//将线性表中第i个位置的元素返回,只要i的数值在下标范围内,就是把数组第i-1下标的值返回即可 public function getElement($i){ if($this->size==0 || $i<1 || $i>$this->size){ echo "error"; return false; } if(isset($this->linner_list)&&is_array($this->linner_list)){ return $this->linner_list[$i-1]; } }//4.插入操作//在线性表中第i个位置之前插入新的数据元素,线性表的长度+1/* * (1) 如果插入位置不合理,抛出异常 * (2)如果线性表的长度大于数组长度,则抛出异常或者动态增加容量 * (3)从最后一个元素开始向前遍历到第i个位置,分别将他们都向后移动一个位置 * (4)将要插入的元素填入i处 * (5)表长加1 */ public function listInsert($i,$element){ if($i<1 || $i>$this->size){ echo "error"; return false; } // $this->size ++; if(isset($this->linner_list)&&is_array($this->linner_list)){ if ($this->size==0){ $this->linner_list[0]=$element; $this->size++; }else{ for($j = $this->size-1;$j>=$i-1;$j--){ $this->linner_list[$j+1] = $this->linner_list[$j]; } $this->linner_list[$i-1] = $element; $this->size ++; } } } //5.删除操作 //删除线性表中第i个位置的元素,线性表的长度-1 /* * (1) 如果删除位置不合理,抛出异常 * (2)取出删除的元素 * (3)从最后一个元素开始向前遍历到第i个位置,分别将他们都向后移动一个位置 * (4)表长减1 */ public function listDelete($i){ if($i<1 || $i>$this->size){ echo "error"; return false; } if(isset($this->linner_list)&&is_array($this->linner_list)){ for($j = $i;$j<$this->size;$j++){ $this->linner_list[$j-1] = $this->linner_list[$j]; } $this->size --; } }}?>

我们可以来验证一下我们写的函数

getElement($i); echo $num; echo "
";}//在第二个位置插入元素66$linear_list->listInsert(2,66);print_r($linear_list); echo "
";
//删除第二个元素66 $linear_list->listDelete(2); print_r($linear_list); ?>

最后的结果是这样的

转载于:https://www.cnblogs.com/xlzfdddd/p/9795509.html

你可能感兴趣的文章
LeetCode Shortest Unsorted Continuous Subarray
查看>>
(转载)Java多线程入门理解
查看>>
用JS打开新窗口,防止被浏览器阻止的方法
查看>>
自我介绍
查看>>
数据库实例练习
查看>>
mybatis中sql片段
查看>>
Ubuntu下安装Android Studio全过程(2015.01.27)
查看>>
ABAP术语-Company Code
查看>>
学习笔记:弧度和角度转换的定义以及转换方法
查看>>
shell中的数值运算
查看>>
23种设计模式之六(工厂模式)
查看>>
HashSet、TreeSet和LinkedHashSet分别基于HashMap、TreeMap和LinkedHashMap
查看>>
maven 添加json-lib包 or自定义jar包
查看>>
linux之ssh服务
查看>>
Xcode工程各个文件夹作用及新建工程参数含意
查看>>
while用法
查看>>
码流识别与传输
查看>>
关于H5页面在微信浏览器中视频播放的问题
查看>>
01.Python基础-1.Python简介及基础
查看>>
自定义注解
查看>>