/*
1.C++的链表连接过程是由构造函数完成的
2.成员访问要注意访问权限
*/
#include<iostream>
#include<string>
using namespace std;
struct Data //节点描述
{
//数据由两部分组成的 一个是key 一个是data
const int key;
string data;
//key的初始化必须采用初始化参数列表
Data(int key, string name) :key(key), data(name) {}//构造函数 data必须初始化为name才能打印输入测值
};
class Node
{
public:
Node(int key, string data) :nodeData(key, data)//类的组合必须要调用组合类的构造函数
{
next = NULL;//指针先赋值为空
}
Node(int key, string data, Node* next) :nodeData(key, data), next(next)
{
}
Data getNodedata()//提供一个公有接口去访问数据
{
return nodeData;
}
Node* getNext()
{
return next;
}
protected:
Data nodeData;
Node* next;
};
class List
{
public:
List()
{
headNode = NULL;
size = 0;
}
void insert(int key, string data)
{
headNode = new Node(key, data, headNode); //表头插入由构造函数完成
//newNode->next = headNode; 错误,指针不可以访问
}
void printList()
{
Node* pmove = headNode;
while (pmove != NULL)
{
cout << pmove->getNodedata().key <<"\t"<<pmove->getNodedata().data<< endl;
pmove=pmove->getNext();//指针往下走,不能够直接pmove = pmove->next 因为类外无法直接访问的 必须以函数放回值的方式
}
}
protected:
Node* headNode;
int size = 0;//万金油参数
};
int main()
{
List* plist = new List;
Data info[3]{ { 520,"初七" }, { 666,"888" }, { 111,"222" } };
for (int i = 0; i < 3; i++)
{
plist->insert(info[i].key,info[i].data);
}
plist->printList();
return 0;
}
07-25
487
10-09
340
11-06
1034