//链表的模板实现

本文介绍了一个通用链表类的模板实现,包括插入、删除、查找等基本操作,并通过示例展示了如何使用该链表类进行数据操作。
//链表的模板实现 
//By KiRa 07/08/28

#include 
<iostream>
using namespace std;

/*
Length = 0
IsEmpty = 1
List is 2  6
IsEmpty = 0
First element is 2
Length = 2
Deleted element is 2
List is 6
*/


class OutOfBounds {
   
public:
      OutOfBounds() {}
};

template 
<class T> class ChainIterator;
template 
<class T> class Chain;
template 
<class T> class KeyedChain;
template 
<class T> class LinkedStack;

template 
<class T>
class ChainNode {
   friend 
class Chain<T>;
   friend 
class ChainIterator<T>;
   friend 
class KeyedChain<T>;
   friend 
class LinkedStack<T>;
   
private:
      T data;
      ChainNode
<T> *link;
};

template
<class T>
class Chain {
   friend 
class ChainIterator<T>;
   
public:
      Chain() {first 
= 0;}
      
~Chain();
      
bool IsEmpty() const {return first == 0;}
      
int Length() const
      
bool Find(int k, T& x) const
      
int Search(const T& x) const
      Chain
<T>& Delete(int k, T& x); 
      Chain
<T>& Insert(int k, const T& x);
      
void Output(ostream& outconst;
   
private:
      ChainNode
<T> *first;
};

template
<class T>
Chain
<T>::~Chain()
{
   ChainNode
<T> *next; 
   
while (first) {
      next 
= first->link;
      delete first;
      first 
= next;
      }
}

template
<class T>
int Chain<T>::Length() const
{
   ChainNode
<T> *current = first;
   
int len = 0;
   
while (current) {
     len
++;
     current 
= current->link;
     }
   
return len;
}

template
<class T>
bool Chain<T>::Find(int k, T& x) const
{
   
if (k < 1return false;
   ChainNode
<T> *current = first;
   
int index = 1
   
while (index < k && current) ...{
      current 
= current->link;
      index
++;
      }
   
if (current) {x = current->data;
                 
return true;}
   
return false;
}

template
<class T>
int Chain<T>::Search(const T& x) const
{
   ChainNode
<T> *current = first;
   
int index = 1;
   
while (current && current->data != x) {
      current 
= current->link;
      index
++;
      }
   
if (current) return index;
   
return 0;
}

template
<class T>
Chain
<T>& Chain<T>::Delete(int k, T& x)
{
   
if (k < 1 || !first)
      
throw OutOfBounds();
   
   ChainNode
<T> *= first;

   
if (k == 1
      first 
= first->link; 
   
else { 
      ChainNode
<T> *= first;
      
for (int index = 1; index < k - 1 && q;
                          index
++)
         q 
= q->link;
      
if (!|| !q->link)
         
throw OutOfBounds(); 
      p 
= q->link; 
      q
->link = p->link;} 

   x 
= p->data;
   delete p;
   
return *this;
}

template
<class T>
Chain
<T>& Chain<T>::Insert(int k, const T& x)
{
   
if (k < 0throw OutOfBounds();

   ChainNode
<T> *= first;
   
for (int index = 1; index < k && p;
                       index
++)  
      p 
= p->link;
   
if (k > 0 && !p) throw OutOfBounds();

   ChainNode
<T> *= new ChainNode<T>;
   y
->data = x;
   
if (k) {
           y
->link = p->link;
           p
->link = y;}
   
else {
         y
->link = first;
         first 
= y;}
   
return *this;
}

template
<class T>
void Chain<T>::Output(ostream& outconst
{
   ChainNode
<T> *current;
   
for (current = first; current;
                         current 
= current->link)
      
out << current->data << "  ";
}

template 
<class T>
ostream
& operator<<(ostream& outconst Chain<T>& x)
 {x.Output(
out); return out;}
   
   
int main(void)
{
   
try {
      Chain
<int> L;
      cout 
<< "Length = " << L.Length() << endl;
      cout 
<< "IsEmpty = " << L.IsEmpty() << endl;
      L.Insert(
0,2).Insert(1,6);
      cout 
<< "List is " << L << endl;
      cout 
<< "IsEmpty = " << L.IsEmpty() << endl;
      
int z;
      L.Find(
1,z);
      cout 
<< "First element is " << z << endl;
      cout 
<< "Length = " << L.Length() << endl;
      L.Delete(
1,z);
      cout 
<< "Deleted element is " << z << endl;
      cout 
<< "List is " << L << endl;
      }
   
catch (...) {
      cerr 
<< "An exception has occurred" << endl;
      }
   
   cin.
get();
   
return EXIT_SUCCESS;
}
独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)内容概要:本文围绕“独立储能的现货电能量与调频辅助服务市场出清协调机制”展开,提出了一种基于Matlab代码实现的优化模型,旨在协调独立储能系统在电力现货市场与调频辅助服务市场中的联合出清问题。文中结合鲁棒优化、大M法和C&CG算法处理不确定性因素,构建了多市场耦合的双层或两阶段优化框架,实现了储能资源在能量市场和辅助服务市场间的最优分配。研究涵盖了市场出清机制设计、储能运行策略建模、不确定性建模及求解算法实现,并通过Matlab仿真验证了所提方法的有效性和经济性。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事电力市场、储能调度相关工作的工程技术人员。; 使用场景及目标:①用于研究独立储能在多电力市场环境下的协同优化运行机制;②支撑电力市场机制设计、储能参与市场的竞价策略分析及政策仿真;③为学术论文复现、课题研究和技术开发提供可运行的代码参考。; 阅读建议:建议读者结合文档中提供的Matlab代码与算法原理同步学习,重点关注模型构建逻辑、不确定性处理方式及C&CG算法的具体实现步骤,宜在掌握基础优化理论的前提下进行深入研读与仿真调试。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值