本来想要在头结点的数据域存放链表长度,结果后来这样反而出了一些麻烦
#include <iostream>
using namespace std;
#define MAXSIZE 123
typedef int ElemType;//为复杂的声明定义简单的别名
struct Node
{
ElemType date;
Node *next;
Node(ElemType elem);
};
Node::Node(ElemType elem)//节点的构造函数里对数据域赋值,不用在新建节点之后再赋值
{
date=elem;
next=NULL;
}
class LinkList
{
public:
LinkList();
~LinkList();
bool GetElem(int i,ElemType &elem);//获取第i个元素
bool InsertBetween(int i,ElemType elem);//中间某位置插入
bool InsertAfterHead(ElemType elem);//头结点之后插入
bool DeleteNode(int i,ElemType &elem);//删除结点并返回结点数据域
ElemType GetListLength();//获得链表长度,其实就是头结点数据域
void* GetHead();//获得头结点
bool DestroyLinklist();//销毁链表
private:
Node *at_head;
};
bool LinkList::DestroyLinklist()
{
Node *p=at_head->next;
for(;p;)
{
at_head->next=p->next;
delete p;//只是释放指针指向的内存,指针本身并没有被删除
p=at_head->next;
}
delete at_head;
return true;
}
void* LinkList::GetHead()
{
retu