静态链表
-
存储的方式是链式存储
-
存储的媒介是数组
-
空间分为两部分,一部分未使用以avil作为指针控制,一部分使用过以头结点或附加头结点控制
-
表尾增加和表中插入在找到对应位置要通过avil来分配新数据元素内存,先找到对应的avil处所指向的内存,将avil的下一块内存来作为新的free空间控制节点,先执行
p=avil
后执行avil=elem[avil].link;
,分配新的数据元素内存elem[p]=new node(x)
,elem[p].link=elem[i].link
,elem[i].link=p
-
表中删除找到对应位置的前一位置后,模仿普通链表方式执行
node.next=node.next.next
,这里用了elem[i].link=elem[elem[i].link].link
,然后将i所指向的位置作为新的free空间头结点,操作是elem[i].link=avil;avil=i;
const in maxSize=100;
template<class T>
struct StaticLinkNode{
T data;
int link;
};
class StaticLinkList{
protected:
StaticLinkNode<T> elem*;
int avil;//address for init memory
public:
void InitList();
int Length();
int Search(const T &x);
int Locate(int i);
bool Append(T x);
bool Insert(int i,T x);
bool Remove(int i,T &x);
bool IsEmpty()const;
};
void StaticLinkList<T>