队列

队列

一、   定义:队列元素只能从队尾插入(称为入队操作,enqueue),从队首删除(称为出对操作,dequeue)。

二、   ADT:

template <typename E>class Queue{

public:

Queue(){}            //构造函数

virtual ~Queue() {}   //析构函数

 

virtual void clear() = 0;                //清除

virtual void enqueue(const E&) = 0;      //入队

virtual void dequeue() = 0;              //出队

virtual const E& frontValue() const = 0; //队首元素

virtual int length() const = 0;          //队列长度

};

三、   顺序队列:

l  实现方法:listArray是一个指向存放队列元素数组的指针,队列的构造函数提供可选参数,以设置队列的最大长度。为了区分空队列和满队列,数组大小实际要比队列允许的最大长度大1。

l  代码如下:

template<typename E>class AQueue:public Queue < E > {

private:

int maxSize;  //最大长度

int front;          //队首元素

int rear;           //队尾元素

E* listArray;    //数组

public:

AQueue(int sz = defaultSzie)

{

     maxSize= sz + 1;

     rear= 0; front = 1;

     listArray= new E[maxSize];

}

~AQueue(){delete[] listArray; }

void clear(){ rear = 0; front = 1; }

void enqueue(const E& it)

{

     assert(((rear+ 2) % maxSize) != front, "Queue is full!");

     rear= (rear + 1) % maxSize;

     listArray[rear]= it;

}

E dequeue()

{

     assert(length()!= 0, "Queue is empty!");

     E it = listArrey[front];

     front= (front + 1) % maxSize;

     returnit;

}

const E& frontValue() const

{

     assert(length!= 0, "Queue is empty!");

     return listArray[front];

}

int length() const

{

     retrun ((rear+ maxSize) - front + 1) % maxSize;

}

};

 

四、   链式队列

l  在初始化的时候,front和rear同时指向头节点,之后front总是指向头节点,而rear指向队列的尾结点。

l  代码如下:

template<typename E>class LQueue:public Queue < E > {

private:

Link<E>* front;  //队首元素

Link<E>* rear;   //队尾元素

int size;

public:

LQueue(intsz = defaultSize)

{

     front= rear = new Link<E>();

     size= 0;

}

~LQueue(){clear(); delete front; }

 

void clear()

{

     while(front->next != NULL)

     {

         rear= front;

         deleterear;

     }

     rear= front;

     size= 0;

}

void enqueue(const E& it)

{

     rear->next= new Link<E>(it, NULL);

     rear= rear->next;

     size++;

}

E dequeue()

{

     assert(size!= 0, "Queue is empty!");

     Eit = front->next->element;

     Link<E>*temp = front->next;

     front->next= temp->next;

     if(rear == temp) rear = front;

     deletetemp;

     size--;

     returnit;

}

const E& frontValue() const

{

     assert(size!= 0, "Queue is empty!");

     returnfront->next->element;

}

int length() const { return szie; }

};

内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值