通过一段代码说明:
# include <iostream>
using namespace std;
struct new_student
{
int number1;
int number2;
new_student *next;
};
class student
{
private:
struct new_student *head;
public:
student() { head = NULL; } //无参构造函数,中括号中可以为空
new_student *creat(); //创建链表
int get_length(new_student *head); //得到链表的长度
void Insert(new_student *head, int new_number1, int new_number2); //链表的插入
void print(new_student *head); //链表的打印
};
void student::print(new_student *head)
{
struct new_student *p;
p = head->next;
while (p) {
cout << p->number1 << " " << p->number2 << endl;
p = p->next;
}
}
new_student *student::creat()
{
cout << "请输入节点中的两个数字(当两个数字分别为0时终止输入)" << endl;
struct new_student *p, *head;
head = new new_student;
head->next = NULL; //初始化空列表
while (true) {
p = new new_student;
cin >> p->number1 >> p->number2;
if (!(p->number1)) {
break;
}
p->next = head->next;
head->next = p;
}
return head;
}
int student::get_length(new_student *head)
{
new_student *p;
p = head->next;
int length = 0;
while (p) {
++length;
p = p->next;
}
return length;
}
void student::Insert(new_student *head, int new_number1, int new_number2)
{
new_student *p2;
p2 = new new_student;
p2->number1 = new_number1; p2->number2 = new_number2;
p2->next = head->next;
head->next = p2; //我使用的是头插法所以输出结果顺序是逆着的
}
int main()
{
int new_number = 9;
student one;
new_student *head;
head = one.creat();
cout << "总共有" << one.get_length(head)<< "个节点" << endl;
cout << "插入一个节点后的链表" << endl;
one.Insert(head,new_number,new_number);
one.print(head);
system("pause");
return 0;
}
结果如下: