zoukankan      html  css  js  c++  java
  • 循环链表

    class Node{
    		public $data=null;
     		public $next = null;
     		public function __construct($data=null){
     			$this->data = $data;
     		}
    	}
    
    	class LinkdList{
    		public $header=null;
    		public function __construct($data=null){
    			$this->header= new Node();
    		}
    		//插入
    		public function insert($data){
    			$current = $this->header;
    			$newNode = new Node($data);
    
    			while($current->next){
    				if($current->next != $this->header){
    					$current = $current->next;
    				}else{
    					break;	
    				}
    			}
    			$current->next = $newNode;
    			$newNode->next = $this->header;
    		}
    		//查找所在位置
    		public function find($data){
    			$current = $this->header->next;
    			$index=1;
    			while($current){
    				if($current->data == $data){
    					break;
    				}else{
    					$index++;
    					$current = $current->next;
    				}
    			}
    			return $index;
    		}
    
    		//固定位置修改
    		public function update($data,$num){
    			$current = $this->header->next;
    			$index=1;
    			while($index < $num ){
    				$current = $current->next;
    				$index++;
    			}
    			$current->data=$data;
    		}
    		//添加
    		public function add($data,$num){
    			$current = $this->header->next;
    			$index=1;
    			$newNode = new Node($data);
    			while($index < $num){
    				$prev = $current;
    				$current=$current->next;
    				$index++;
    			}
    			$prev->next = $newNode;
    			$newNode->next = $current;
    		}
    
    		//删除
    		public function del($num){
    			$current = $this->header->next;
    			$index = 1;
    			while($index < $num){
    				$prev = $current;
    				$current = $current->next;
    				$index++;
    			}
    			$prev->next = $current->next;
    		}
    
    		//遍历
    		public function listLink(){
                $current=$first = $this->header;
                while($current){
                	$current = $current->next;
                	if($current == $first){
                		break;
                	}
                	echo $current->data;
                	echo "
    ";
                }
            }
    	}
    
    	//$arr=[10,304,4,5,1,30];
    	$arr=[10,304,4,5,1,30,38];
        $obj  = new LinkdList();
        foreach ($arr as $key => $value) {
            $obj->insert($value);
        }
        //$obj->update(100,2);
        //$obj->add(90,4);
       //echo  $obj->find(5);
       $obj->del(4);
       $obj->listLink();
    

      

  • 相关阅读:
    osg模型部分节点旋转
    IFC数据模型构件控制
    自定义基于IFC数据的施工进度数据结构
    QDateTime QString
    Qt获取屏幕分辨率
    Qt自定义类重写 copy
    removeEntry
    initGanttView
    IfcAxis2Placement3D IFC构件的位置和方向
    致我最爱的你
  • 原文地址:https://www.cnblogs.com/zh718594493/p/12090225.html
Copyright © 2011-2022 走看看