静态顺序表的实现

本文档展示了静态顺序表的C++实现,包括类`Sta_seqlist`的定义,成员函数如插入、删除、获取长度、查找等操作的实现。代码包括头文件sta_seqlist.h、实现文件sta_seqlist.cc以及测试代码main.cc。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
/*******************************************
the headfile of static sequence list, which defines the class of static seqlist
filename: sta_seqlist.h
copyright: cozzw
author: zzw
created date: 2013-1-31

**********************************************/

      1   #ifndef _STA_SEQLIST
      2 
      3   #define _STA_SEQLIST
      4 
      5    const int MAXSIZE = 100;  //数组最大长度
      6 
      7    class Sta_seqlist        //定义静态顺序表类。
      8    {
      9         private:            //  表的总大小,当前使用的大小,用数组模拟顺序表
     10             int a[MAXSIZE];
     11             int length;
     12             int size;
     13 
     14         public:
     15           Sta_seqlist();       // 带参构造函数,参数初始化当前的表的长度
     16           bool insert(int i, int elem);//在第i个位置插入数据elem,修改表的长度,返回插入状态
     17           bool _delete(int i, int& elem);//删除第i个位置的元素,修改表长,删除元素放在elem中,返回删除状态
     18           int getLength();   //返回表的当前长度
     19           int get(int i);   //返回第i个元素值
     20           int find(int key);//查找关键字为key的元素在顺序表中的位置
     21           void show();     //打印数组元素
     22           ~Sta_seqlist(){}
     23   };
     24 
     25 
     26   #endif
     27 

/*******************************************
the file realizes the function in the class of seqlist
filename: sta_seqlist.cc
copyright: cozzw
author: zzw


**********************************************/


      1 #include <iostream>
      2 #include "sta_seqlist.h"
      3 using namespace std;
      4 
      5 Sta_seqlist::Sta_seqlist():n(0),length(MAXSIZE)
      6 {
      7     a[0] = 0; //哨兵;
      8 }
      9 
     10  bool Sta_seqlist:: insert(int i, int elem)
     11 {
     12     if(i<1 || i>this->length-1 )        //判断插入位置是否合理
     13     {
     14         cout<<"插入位置不合理,程序退出"<<endl;
     15         return false;
     16     }
     17     else
     18          if( n == this->length-1 )        //判断表是否满
     19          {
     20               cout<<"表已满,程序退出"<<endl;
     21               return false;
     22           }
     23           else
     24          {
     25             for(int j=n; j>i-1; j--)      //从第i个到第n个元素后移一位
     26                  this->a[j+1] = this->a[j];
     27             this->a[i] = elem;
     28             this->size++;
       29           return true;
     30          }
     31 }
     32 
     33 bool Sta_seqlist:: _delete(int i, int& elem)
     34 {
     35     if(i<1 || i>this->n+1 )        //判断删除位置是否合理
     36     {
     37         cout<<"删除位置不合理,程序退出"<<endl;
     38         return false;
     39      }
     40 
     41     elem = this->a[i];
     42     this->size = this->size-1;
     43 
     44     for(int j=i; j<n+1; j++)   //从第i个元素开始,用前一个元素覆盖后一个元素
     45     {
     46         this->a[j] = this->a[j+1];
     47     }
     48 
     49     return true;
     50 }
     51 
     52 int Sta_seqlist:: getLength()
     53 {
     54     return this->size;
     55 }
     56 
     57 int Sta_seqlist::get(int i)
     58 {
     59     if(i<1 || i>n)
     60     {
     61         cout<<"该位置元素不存在,返回0"<<endl;
     62         return 0;
     63     }
     64     else
     65        return a[i];
     66 }
     67 
     68 void Sta_seqlist::show()
     69 {
     70    for(int i=1; i<n+1; i++)
     71      cout<<a[i]<<"  ";
     72    cout<<endl;
     73 }
     74 
     75 int Sta_seqlist::find(int key)
     76 {
     77      a[0] = key;
     78      int i = size;
     79 
     80      while(a[i] != key)
     81         i--;
     82      return i;//用i=0标记查找失败,避免了记录查找次数
     83 }


/*******************************************
the file is used to test the seqlist
filename: main.cc
copyright: cozzw
author: zzw
created date: 2013-1-31

**********************************************/

#include "sta_seqlist.h"
#include<iostream>
using namespace std;

int main(void)
{
     Sta_seqlist seqlist;
     int elem;
     int n;


     for(int i=1; i<5; i++)
        seqlist.insert(i,i);


     n = seqlist.getLength();
     cout<<"元素个数为"<<n<<endl;
     seqlist.show();


     seqlist.insert(2,10);
     n = seqlist.getLength();
     cout<<"元素个数为"<<n<<endl;
     seqlist.show();


     cout<<"记录4在表中的位置为:";
     cout<<seqlist.find(4)<<endl;


     seqlist._delete(2,elem);
     cout<<"元素个数为"<<seqlist.getLength()<<endl;
     seqlist.show();
     cout<<"被删除元素为"<<elem<<endl;
     
     cout<<seqlist.get(2)<<endl;
}










      
内容概要:本文围绕直流微电网中带有恒功率负载(CPL)的DC/DC升压转换器的稳定控制问题展开研究,提出了一种复合预设性能控制策略。首先,通过精确反馈线性化技术将非线性不确定的DC转换器系统转化为Brunovsky标准型,然后利用非线性扰动观测器评估负载功率的动态变化和输出电压的调节精度。基于反步设计方法,设计了具有预设性能的复合非线性控制器,确保输出电压跟踪误差始终在预定义误差范围内。文章还对比了多种DC/DC转换器控制技术如脉冲调整技术、反馈线性化、滑模控制(SMC)、主动阻尼法和基于无源性的控制,并分析了它们的优缺点。最后,通过数值仿真验证了所提控制器的有效性和优越性。 适合人群:从事电力电子、自动控制领域研究的学者和工程师,以及对先进控制算法感兴趣的研究生及以上学历人员。 使用场景及目标:①适用于需要精确控制输出电压并处理恒功率负载的应用场景;②旨在实现快速稳定的电压跟踪,同时保证系统的鲁棒性和抗干扰能力;③为DC微电网中的功率转换系统提供兼顾瞬态性能和稳态精度的解决方案。 其他说明:文中不仅提供了详细的理论推导和算法实现,还通过Python代码演示了控制策略的具体实现过程,便于读者理解和实践。此外,文章还讨论了不同控制方法的特点和适用范围,为实际工程项目提供了有价值的参考。
内容概要:该论文介绍了一种名为偏振敏感强度衍射断层扫描(PS-IDT)的新型无参考三维偏振敏感计算成像技术。PS-IDT通过多角度圆偏振光照射样品,利用矢量多层光束传播模型(MSBP)和梯度下降算法迭代重建样品的三维各向异性分布。该技术无需干涉参考光或机械扫描,能够处理多重散射样品,并通过强度测量实现3D成像。文中展示了对马铃薯淀粉颗粒和缓步类动物等样品的成功成像实验,并提供了Python代码实现,包括系统初始化、前向传播、多层传播、重建算法以及数字体模验证等模块。 适用人群:具备一定光学成像和编程基础的研究人员,尤其是从事生物医学成像、材料科学成像领域的科研工作者。 使用场景及目标:①研究复杂散射样品(如生物组织、复合材料)的三维各向异性结构;②开发新型偏振敏感成像系统,提高成像分辨率和对比度;③验证和优化计算成像算法,应用于实际样品的高精度成像。 其他说明:PS-IDT技术相比传统偏振成像方法具有明显优势,如无需干涉装置、无需机械扫描、可处理多重散射等。然而,该技术也面临计算复杂度高、需要多角度数据采集等挑战。文中还提出了改进方向,如采用更高数值孔径(NA)物镜、引入深度学习超分辨率技术等,以进一步提升成像质量和效率。此外,文中提供的Python代码框架为研究人员提供了实用的工具,便于理解和应用该技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值