15.2链表类要定义链表,首先将每个结点定义成一个类:template<class datatype>classNODEIpublic://数据域datatype data;//指针域NODE <datatype> *next;1;注:next为类的成员,指向本类别的对象5
15.2 链表类 5 要定义链表,首先将每个结点定义成一个类: template<class datatype> class NODE { public: datatype data; //数据域 NODE <datatype> *next; //指针域 }; 注:next为类的成员,指向本类别的对象
注:虚拟的数据类型datatype可以是:整型结构体等浮点数、字符串类例如:struct student声明结点类对象:lNODE <int> jie1;long num;NODE <string> jie2;char name[9];NODE<struct student>jie3;char sex;注:struct可删float score;1;6
6 注: 虚拟的数据类型datatype可以是:整型、 浮点数、字符串类、结构体等 例如: struct student { long num; char name[9]; char sex; float score; }; 声明结点类对象: NODE <int> jie1; NODE <string> jie2; NODE <struct student> jie3; 注: struct 可删
将表格定义为如下链表类:template<class datatype>class LIST private:NODE<datatype>*head;//链表头指针public:LIST() (head=NULL;)//构造函数~LIST();//构造函数int length();/求表长boolinsert data(datatype data,inti);//插入元素函数,data为插入值,i为插入位置voidprintlistO;//打印输出链表中的所有元素
7 将表格定义为如下链表类: template<class datatype> class LIST { private: NODE <datatype> *head; //链表头指针 public: LIST() {head=NULL;} //构造函数 ~LIST(); //构造函数 int length(); //求表长 bool insert_data(datatype data,int i); //插入元素函 数, data为插入值,i为插入位置 void print_list(); //打印输出链表中的所有元素 };
构造/析构函数构造函数public:LISTO(head=NULL;)~LIST()NODE<datatype> *p;//析构函数while(head)1将链表中所有元素占用空间释放(p=head;head=head->next;delete p;
8 public: LIST(){head=NULL;} //构造函数 ~LIST() { NODE <datatype> *p; //析构函数 while(head) //将链表中所有元素占用空间释放 { p=head; head=head->next; delete p; } }; 构造/析构函数
一、结点的插入操作head为链表头指针,指向第一个结点,而构造函数将头指针置为空NULL;当声明一个链表类对象时,链表为空表,无结点。headaNULLOan图15-2表格的非顺序存诸结构示意图
9 head为链表头指针,指向第一个结点,而构造函 数将头指针置为空NULL; 当声明一个链表类对象时,链表为空表,无结点。 一、结点的插入操作 head 1 a 2 a an NULL 图15-2 表格的非顺序存储结构示意图