dzqlist.h
来自「一种基于二维链表的稀疏矩阵模半板类设计 A template Class of」· C头文件 代码 · 共 109 行
H
109 行
#include <iostream.h>
#include <stdlib.h>
#ifndef _dzqList_
#define _dzqList_
//ChainNode...........................................................................
template <class T>
class Chain;
template <class T>
class SigLinkedCirList; //forward declaration.
template <class T>
class ChainNode
{
friend Chain<T>;
friend SigLinkedCirList<T>;
private:
T data;
ChainNode<T> *link;
};
//ChainNode over...........................................................................
//Chain...........................................................................
template<class T>
class Chain
{
public:
Chain() {first=last= 0;}
Chain(Chain<T>& c);
Chain<T>& operator=(const Chain<T>& c);
~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 Erase();
void Output(ostream& out) const;
Chain<T>& Append(const T& x);
Chain<T>& AppendLeft(const T& x);
Chain<T>& Reverse();
Chain<T>& Reverse(Chain<T>& dest,Chain<T>& src);
Chain<T>& Emerge(Chain<T>& dest,Chain<T>& srcA,Chain<T>& srcB);
void Split(Chain<T>& destA, Chain<T>& destB, Chain<T>& srcC);
inline void Zero() { first =last= 0;}
// friend class ChainIterator<T>;
private:
ChainNode<T> *first; // 指向第一个节点的指针
ChainNode<T> *last;
};
//***************************************************************************************//
//****SigLinkedCirList with HeadNode,so the circular chain(list) never be empty**********//
//***************************************************************************************//
template <class T>
class SigLinkedCirList
{
public:
SigLinkedCirList();
SigLinkedCirList(SigLinkedCirList<T>& c);
SigLinkedCirList<T>& operator=(const SigLinkedCirList<T>& c);
~SigLinkedCirList( );
bool IsEmpty() const {return first==last;}
int Length() const;
bool Find(int k, T& x) const;
int Search(const T& x) const;
SigLinkedCirList<T>& Delete(int k, T& x);
SigLinkedCirList<T>& Insert(int k, const T& x);
void Erase();
void Output(ostream& out) const;
SigLinkedCirList<T>& Append(const T& x);
SigLinkedCirList<T>& AppendLeft(const T& x);
SigLinkedCirList<T>& Reverse();
SigLinkedCirList<T>& Reverse(SigLinkedCirList<T>& dest,SigLinkedCirList<T>& src);
// Chain<T>& Emerge(Chain<T>& dest,Chain<T>& srcA,Chain<T>& srcB);
// void Split(Chain<T>& destA, Chain<T>& destB, Chain<T>& srcC);
inline void Zero() { first->link=0; last=first;}
// friend class ChainIterator<T>;
private:
ChainNode<T> *first; // 指向第一个节点的指针
ChainNode<T> *last;
ChainNode<T> HeadNode;
};
//****************************************************************************************//
//********************SigLinkedCirList's interface define finished************************//
//****************************************************************************************//
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?