zoukankan      html  css  js  c++  java
  • [PHP] 链表数据结构(单链表)

    链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表
    
    单向链表,双向链表,环形链表
    
     
    
    PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区)
    
    规定:基本数据类型,一般放在栈区
    
    复合数据类型,比如对象,放在堆区
    
     
    
    定义一个类Hero
    
    定义成员属性排名 $no
    
    定义成员属性姓名 $name
    
    定义成员属性昵称 $nickname
    
    定义成员属性 $next,是一个引用,指向下一个Hero对象
    
    定义构造函数,传递参数:$no,$name,$nickname
    
     
    
    创建一个头head,该head只是一个头,不放入数据
    
    获取$head对象,new Hero()
    
    获取第一个Hero对象$hero,new Hero(1,”宋江”,”及时雨”)
    
    连接两个对象,$head->next=$hero
    
    获取第二个Hero对象$hero2,new Hero(2,”卢俊义”,”玉麒麟”)
    
    连接两个对象,$hero->next=$hero2
    
     
    
    遍历链表
    
    定义一个函数showHeros(),参数:$head对象
    
    定义一个临时变量$cur来存储 $head对象
    
    while循环,条件$cur->next不为null
    
    打印一下
    
    指针后移,$cur=$cur->next
    
    PHP版:
    
    <?php
    /**
    * 英雄类
    */
    class Hero{
        public $no;
        public $name;
        public $nickname;
        public $next=null;
        public function __construct($no='',$name='',$nickname=''){
            $this->no=$no;
            $this->name=$name;
            $this->nickname=$nickname;
        }
    }
    class LinkListDemo{
        public static function main(){
            $head=new Hero();
            $hero1=new Hero(1,"宋江","及时雨");
            $head->next=$hero1;
            $hero2=new Hero(2,"卢俊义","玉麒麟");
            $hero1->next=$hero2;
            LinkListDemo::showHeros($head);
        }
        /**
        * 展示英雄
        */
        public static function showHeros($head){
            $cur=$head;
            while($cur->next!=null){
                echo "姓名:".$cur->next->name."<br/>";
                $cur=$cur->next;
            }
        }
    
    }
    
    LinkListDemo::main();
     
    
    java版:
    class Hero{ public int no; public String name; public String nickname; public Hero next=null; public Hero(){ } public Hero(int no,String name,String nickname) { this.no=no; this.name=name; this.nickname=nickname; } } public class LinkListDemo { /** * @param args */ public static void main(String[] args) { Hero head=new Hero(); Hero hero1=new Hero(1, "宋江", "及时雨"); head.next=hero1; Hero hero2=new Hero(2, "卢俊义", "玉麒麟"); hero1.next=hero2; showHeros(head); } /** * 展示英雄 * @param head */ public static void showHeros(Hero head){ Hero cur=head; while(cur.next!=null){ System.out.println("姓名:"+cur.next.name); cur=cur.next; } } }
  • 相关阅读:
    Power BI for Office 365(八)共享查询
    Power BI for Office 365(七) Power BI站点
    Power BI for Office 365(六)Power Map简介
    Power BI for Office 365(五)Power View第二部分
    Power BI for Office 365(四)Power View第一部分
    Power BI for Office 365(三)Power Pivot
    Power BI for Office 365(二)Power Query
    java 继承、重载、重写与多态
    Android 热修复方案Tinker(一) Application改造
    阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结
  • 原文地址:https://www.cnblogs.com/sgm4231/p/9758943.html
Copyright © 2011-2022 走看看