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();
    

      

  • 相关阅读:
    数据库连接代码
    智能家居资源汇总
    android应用设计与实现相关资源汇总
    嵌入式设计应用资料汇总,不定时更新中……
    Zigbee相关资料大全,不断更新中……
    H.264视频编码资料汇总,不断更新……
    星网锐捷笔试
    华为 10第二题 成都 约瑟夫环
    2014华为校园招聘上机测试题目(华科提前批)
    2014年华为校招成渝地区上机试题
  • 原文地址:https://www.cnblogs.com/zh718594493/p/12090225.html
Copyright © 2011-2022 走看看