C++静的チェーンテーブル基本アルゴリズム実装
5947 ワード
C++静的チェーンテーブル基本アルゴリズム実装
転載先:https://www.cnblogs.com/ycbeginner/p/10006373.html
#ifndef StaticLinkList_h
#define StaticLinkList_h
const int MAXSIZE = 100;
template <class T>
struct StaticNode{
T data;
int next;
};
template <class T>
class StaticLinkList{
public:
StaticLinkList();
StaticLinkList(T a[], int n);
void Insert(int i, T a);
T Delete(int i);
int Get(int n);
int Locate(T x);
int NewNode();
void DeleteNode(int i);
private:
int front;
int tail;
StaticNode SArray[MAXSIZE];
}
template <class T>
StaticLinkList:: StaticLinkList(){
for(int i = 0;i1;i++){
SArray[i].next = i+1;
}
SArray[MAXSIZE-1].next = -1;
front = -1;
tail = 0;
}
template <class T>
StaticLinkList:: StaticLinkList(T a[], int n){
if(n>MAXSIZE) throw " ";
for(int i=0;i1;i++){
SArray[i].next = i+1;
}
SArray[MAXSIZE-1].next = -1;
for(int i = 0;i1;i++){
SArray[i] = a[i];
}
front = 0;
tail = SArray[n-1].next;
SArray[n-1].next = -1;
}
template <class T>
int StaticLinkList::NewNode(){
if(-1 == tail) throw" ";
int pos = tail;
tail = SArray[tail].next;
return pos;
}
template <class T>
T StaticLinkList::Delete(int i){
if(i<0 || i>MAXSIZE -1){ throw " ";}
if(front == i) front = SArray[i].next;
SArray[i].next = tail;
tail = i;
}
#endif /* StaticLinkList_h */
転載先:https://www.cnblogs.com/ycbeginner/p/10006373.html