C++链表(自制版)


/*
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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值