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.


Related articles: