链表——双端链

链表——双端链表:

 


双端链表和单向列表时相似的,但是在单向列表的基础上增加了一个特性,就是增加了对最后一个
链接点的引用,就像对第一个链接点的引用一样。但我们试图寻找最后一个链接点的时候就不用像
单向链表需要遍历所有的链接点了,可以直接通过最后一个链接的位置获取数据,并且可以在链表的
尾端添加节点。

 



 

//双端列表
class FirstLastList{
 
 public static void main(String[] args) {
  FirstLastList f = new FirstLastList();
  f.insertFirst(3, 3);
  f.insertFirst(4, 4);
  f.insertLast(1, 1);
  f.insertLast(2, 2);
  f.disPlay();
  System.out.println("delete-------------");
  f.deleteFirst();
  f.disPlay();
 }
 
 //记录第一个链接点地址
 public Link first;
 //记录最后一个链接点地址
 public Link last;
 
 //初始化
 public FirstLastList(){
  first = null;
  last = null;
 }
 
 //判断是否为空
 public boolean isEmpty(){
  return first == null;
 }
 
 //添加第一个链接点,这里和单向链表相识,不同的是当链表为空时,必须制定
 //最后一个链接点的地址,否则就无法直接访问末尾的链接点,也就无法在链表尾部添加链接点。
 public void insertFirst(int i, double d){
  Link newLink = new Link(i,d);
  
  //如果为空初始化末端链接点。此时,第一个链接点也就是最后一个链接点。
  if(isEmpty()){
   last = newLink;
  }
  //此处和单向一样,添加首个链接点,将节点的next指向当前的first
  newLink.next = first;
  //首个链接点指向新增加的链接点
  first = newLink;
 }
  
 //增加末尾链接点,末尾添加的方向和添加首个链接点的方向相反。
 public void insertLast(int i, double d){
  Link newLink = new Link(i,d);
  
  //如果为空,初始化首个链接点
  if(isEmpty()){
   first = newLink;
  }else{
   //此处和添加首节点不同,必须是不为空的时候才能操作,
   //此处操作的末链接点的next.
   last.next = newLink;
  }
  //更新末尾链接点地址
  last = newLink;
 }
 
 //删除首节点
 public void deleteFirst(){
  if(isEmpty()){
   System.out.println("list is null");
  }else{
   //如果首节点的下一个链接点为空,就将last置空
   if(first.next == null){
    last  = null;
   }
   //变更首节点的位置。
   first = first.next;
  }
 }
 
 public void disPlay(){
  Link current = first;
  while(current!=null){
   System.out.println(current.dData);
   current = current.next;
  }
 }
}
//链接点对象
class Link{
 public int iData;
 public double dData;
 
 //关系子段,用于存储下一个链接点的位置
 public Link next;
 public Link(int id, double dd){
  this.iData = id;
  this.dData = dd;
 }
 public void displayLink(){
  System.out.println("{" + iData + "," + dData + "}");
 }
}

 

【四轴飞行器】非线性三自由度四轴飞行器模拟器研究(Matlab代码实现)内容概要:本文围绕非线性三自由度四轴飞行器模拟器的研究展开,重点介绍了基于Matlab的建模与仿真方法。通过对四轴飞行器的动力学特性进行分析,构建了非线性状态空间模型,并实现了姿态与位置的动态模拟。研究涵盖了飞行器运动方程的建立、控制系统设计及数值仿真验证等环节,突出非线性系统的精确建模与仿真优势,有助于深入理解飞行器在复杂工况下的行为特征。此外,文中还提到了多种配套技术如PID控制、状态估计与路径规划等,展示了Matlab在航空航天仿真中的综合应用能力。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的高校学生、科研人员及从事无人机系统开发的工程技术人员,尤其适合研究生及以上层次的研究者。; 使用场景及目标:①用于四轴飞行器控制系统的设计与验证,支持算法快速原型开发;②作为教学工具帮助理解非线性动力学系统建模与仿真过程;③支撑科研项目中对飞行器姿态控制、轨迹跟踪等问题的深入研究; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注动力学建模与控制模块的实现细节,同时可延伸学习文档中提及的PID控制、状态估计等相关技术内容,以全面提升系统仿真与分析能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值