Examples of Sequential Linear List and Linear Representation of php Data Structure
- 2021-09-11 19:39:43
- OfStack
In this paper, the sequential linked list and linked linear list of php data structure are described by examples. Share it for your reference, as follows:
Linked list operation
1. InitList (L): Initialize the linked list
2. DestroyList (L): Delete the connection
3. ClearList (L): Empty the linked list
4. ListEmpty (L): Judge whether it is empty
5. ListLength (L): Length of linked list
6. getElem (L, i): Take out the element
7. LocateElem (L, e): Judge whether e is in the linked list
8. PriorElem (L, i): Precursor
9. NextElem (L, i): Succession
10. ListInsert (L, i, e): Insert element
11. ListDelete (L, i,): Delete Element
Sequential linked list operation
<?php
class ArrayList{
private $list;
private $size;
// Constructor
public function __construct(){
$this->list=array();
$this->size=0;
}
public function initList(){
$this->list=array();
$this->size=0;
}
// Delete linked list
public function destoryList(){
if(isset($this->list)){
unset($this->list);
$this->size=0;
}
}
// Empty the linked list
public function clearList(){
if(isset($this->list)){
unset($this->list);
}
$this->list=array();
$this->size=0;
}
// Determine whether the linked list is empty
public function emptyList(){
if(isset($this->list)){
if($this->size=0)
return TRUE;
else
return FALSE;
}
}
// Length of linked list
public function lenghtList(){
if(isset($this->list)){
return $this->size;
}
}
// Element fetching
public function getElem($i){
if($i<1||$i>$this->size){
echo " Overflow <br>";
exit();
}
if(isset($this->list)&&is_array($this->list)){
return $this->list[$i-1];
}
}
// Is it in the linked list
public function locateElem($e){
if(isset($this->list)&&is_array($this->list)){
for($i=0;$i<$this->size;$i++){
if($this->list[$i]==$e){
return $i+1;
}
}
return 0;
}
}
// Precursor
public function priorElem($i){
if($i<1||$i>$this->size){
echo " Overflow ";
exit();
}
if($i==1){
echo " There is no precursor ";
exit();
}
if(isset($this->list)&&is_array($this->list)){
return $this->list[$i-2];
}
}
// Succession
public function nextElem($i){
if($i<1||$i>$this->size){
echo " Overflow ";
exit();
}
if($i==$this->size){
echo " No successor ";
exit();
}
if(isset($this->list)&&is_array($this->list)){
return $this->list[$i];
}
}
// Insert element
public function insertList($i,$e){
if($i<1||$i>$this->size+1){
echo " Insert element in wrong position ";
exit();
}
if(isset($this->list)&&is_array($this->list)){
if($this->size==0){
$this->list[$this->size]=$e;
$this->size++;
}else{
$this->size++;
for($j=$this->size-1;$j>=$i;$j--){
$this->list[$j]=$this->list[$j-1];
}
$this->list[$i-1]=$e;
}
}
}
// Delete Element
public function deleteLlist($i){
if($i<1||$i>$this->size){
echo " Error in deleting element position ";
exit();
}
if(isset($this->list)&&is_array($this->list)){
if($i==$this->size){
unset($this->list[$this->size-1]);
}else{
for($j=$i;$j<$this->size;$j++){
$this->list[$j-1]=$this->list[$j];
}
unset($this->list[$this->size-1]);
}
$this->size--;
}
}
// Traversal
public function printList(){
if(isset($this->list)&&is_array($this->list)){
foreach ($this->list as $value){
echo $value." ";
}
echo "<br>";
}
}
}
?>
Chain linear table
<?php
class LinkList {
private $head;
private $size;
private $list;
public function __construct(){
$this->head="";
$this->size=0;
$this->list=array();
}
public function initList(){
$this->head="";
$this->size=0;
$this->list=array();
}
// Delete linked list
public function destoryList(){
if(isset($this->list)&&isset($this->head)){
unset($this->list);
unset($this->head);
}
}
// Empty the linked list
public function clearList(){
if(isset($this->list)){
unset($this->list);
}
$this->list=array();
$this->size=0;
$this->head="";
}
// Determine whether the linked list is empty
public function emptyList(){
if(isset($this->list)){
if($this->size==0)
returnTRUE;
else
returnFALSE;
}
}
// Length of linked list
public function lenghtList(){
if(isset($this->list)){
return$this->size;
}
}
// Element fetching
public function getElem($i){
if($i<1||$i>$this->size){
echo " Overflow <br>";
exit();
}
if(isset($this->list)&&is_array($this->list)){
$j=1;
// Head pointer
$tmp=$this->head;
while($i>$j){
if($this->list[$tmp]['next']!=null){
$tmp=$this->list[$tmp]['next'];
$j++;
}
}
return $this->list[$tmp]['data'];
}
}
// Is it in the linked list
public function locateElem($e){
if(isset($this->list)&&is_array($this->list)){
$tmp=$this->head;
while($this->list[$tmp]['data']!=$e){
if($this->list[$tmp]['next']!=null){
$tmp=$this->list[$tmp]['next'];
}else{
returnFALSE;
}
}
return TRUE;
}
}
// Precursor
public function priorElem($i){
if($i<1||$i>=$this->size){
echo " Overflow ";
exit();
}
if($i==1){
echo " There is no precursor ";
exit();
}
$tmp=$this->head;
$j=1;
while($i>$j+1){
if($this->list[$tmp]['next']!=null){
$j++;
$tmp=$this->list[$tmp]['next'];
}
}
return$this->list[$tmp]['data'];
}
// Succession
public function nextElem($i){
if($i<1||$i>$this->size){
echo " Overflow ";
exit();
}
if($i==$this->size){
echo " No successor ";
exit();
}
$j=1;
$tmp=$this->head;
while($i>=$j){
if($this->list[$tmp]['next']!=null){
$j++;
$tmp=$this->list[$tmp]['next'];
}
}
return$this->list[$tmp]['data'];
}
// Insert element : Post-interpolation
public function insertList($i,$e){
if(isset($this->list)&&is_array($this->list)){
// Empty table
if($this->size==0){
$this->head=$this->uuid();
$this->list[$this->head]['data']=$e;
$this->list[$this->head]['next']=NULL;
$this->size++;
}else{
if($i<1||$i>$this->size){
echo" Insert element in wrong position ";
exit();
}
$j=1;
$tmp=$this->head;
while($i>$j){
if($this->list[$tmp]['next']!=null){
$j++;
$tmp=$this->list[$tmp]['next'];
}
}
$find=$tmp;
$id=$this->uuid();
if($this->list[$find]['next']==null){
// Tail
$this->list[$find]['next']=$id;
$this->list[$id]['data']=$e;
$this->list[$id]['next']=null;
$this->size++;
}else{
// Middle
$this->list[$id]['next']=$this->list[$find]['next'];
$this->list[$find]['next']=$id;
$this->list[$id]['data']=$e;
$this->size++;
}
}
}
}
// Delete Element
public function deleteLlist($i){
if($i<1||$i>$this->size){
echo " Error in deleting element position ";
exit();
}
if(isset($this->list)&&is_array($this->list)){
if($i==1){
// Delete header element
$this->head=$this->list[$this->head]['next'];
}else{
$tmp=$this->head;
$j=1;
while($i>$j+1){
if($this->list[$tmp]['next']!=null){
$j++;
$tmp=$this->list[$tmp]['next'];
}
}
// Find the precursor of the deleted element
$find=$tmp;
// Elements deleted
if($this->list[$find]['next']!=null){
// Not the last 1 Elements
$delete=$this->list[$find]['next'];
$this->list[$find]['next']=$this->list[$delete]['next'];
}else{
$this->list[$tmp]['next']=null;
}
}
}
}
public function traverstList(){
$tmp=$this->head;
while($this->list[$tmp]['next']!=NULL){
$this->printList($this->list[$tmp]['data'],TRUE);
$tmp=$this->list[$tmp]['next'];
}
$this->printList($this->list[$tmp]['data'],FALSE);
}
public function printList($str,$flag){
if($flag){
echo$str."->";
}else {
echo$str."<br>";
}
}
//uuid Only 1 Code
public function uuid($prefix = '') {
$chars =md5(uniqid(mt_rand(), true));
$uuid = substr($chars,0,8) . '-';
$uuid .=substr($chars,8,4) . '-';
$uuid .=substr($chars,12,4) . '-';
$uuid .=substr($chars,16,4) . '-';
$uuid .= substr($chars,20,12);
return $prefix. $uuid;
}
}
?>
For more readers interested in PHP related contents, please check the special topics of this site: "PHP Data Structure and Algorithm Tutorial", "php Programming Algorithm Summary", "php String (string) Usage Summary", "PHP Array (Array) Operation Skills Complete Book", "PHP Common Traversal Algorithms and Skills Summary" and "PHP Mathematical Operation Skills Summary"
I hope this article is helpful to everyone's PHP programming.