链表的理解

链表的理解

开发工具与关键技术:Visual Studio、C++
作者:张国军
撰写时间:2019年05月13日

链表,通过这段时间对链表的理解。最终有了个人的理解。
我对链表的理解呢,就是一个节点一个节点连接起来的。节点由我们的数据结构构成,我们可以用(struct,class)去创建节点。开始的时候我也有尝试着去用(union)去做连表,但是得出来的结果并不是我想要的,它里面的数值会发生改变,我猜是因为(union)内存共用的问题,所以用(union)做出来的数据不是我想要的。
链表有单向链表、双向链表,也许也有可能有多向链表,就相当于:植物(高等植物、低等植物)的格式出现,我想它也是可以成立的,这个还得以后慢慢去尝试。
下面是我写的一个单链表的汽车店的服务类型的吧。主要有三个功能(进购车辆、销售车辆、查看车库库存车辆)。下面是我的代码实现。

#include <iostream>
using namespace std;
class Plural {
public:
	static int aa;//序号自增
	unsigned int a;//序号
	unsigned int b;//价格
	char name[10];//名字
	Plural * p;
	static Plural * head;
	Plural();
	~Plural();
private:
};
Plural::Plural() {
	a = 0;
	b = 0;
	p = NULL;
}
Plural::~Plural() {
	cout << "销售成功!";
}
Plural * Plural::head = NULL;
int Plural::aa = 1;
//查看车辆库存信息
void examine() {
	if (Plural::head == NULL) {
		cout << "目前没有销售车辆可查询";
	}
	else {
		Plural *l;
		l = Plural::head;
		while (l != NULL)
		{
			cout <<"序号:"<<l->a<<"\t价格:"<< l->b << "\t名称:" << l->name << endl;
			l = l->p;
		}
	}
}
void aad() {//进购车辆
	unsigned int i;
	Plural *m;
	Plural *n = NULL;
	cout << "填写车辆价格: ";
	cin >> i;
	while (i != 0)
	{
		m = new Plural;
		m->b = i;
		cout << "填写车辆名称: ";
		cin >> m->name;
		m->a = Plural::aa++;
		if (Plural::head == NULL) {
			Plural::head = m;
		}
		else
		{
			n = Plural::head;
			while (n->p != NULL)
			{
				n = n->p;
			}
			n->p = m;
		}
		cout << "填写车辆价格: ";
		cin >> i;
	}
	m = NULL;
}
void sell(int b) {//根据序号进行销售车辆
	Plural * q,*p;
	q = Plural::head;
	p = Plural::head;
	if (p->a != b) {
		p = p->p;
	}
	while (p->a!=b)
	{
		q = q->p;
		p = q->p;
		if (p == NULL) {
			cout << "没有找到您所选的序号车辆,请重新选择"<<endl;
			return;
		}
	}
	if (p == Plural::head) {
		Plural::head = Plural::head->p;
	}
	else {
		q->p = p->p;
	}
	delete p;
	p = NULL;
}
void main() {
	int a,b;
	do
	{
		cout << "请选择:\n";
		cout << "1:进购车辆, \n2:销售车辆,\n3:查看车辆库存信息 \n0:退出.\n";
		cin >> a;
		switch (a)// 操作选择
		{
		case 1: // 键入1,购进车辆
		{  
			aad();
		break;
		}
		case 2:// 键入2,售出车辆
		{ 
			cout << "请输入您需要购买车辆的序号: ";
			cin >> b;
			sell(b);    break;
		}
		case 3:// 键入3,查看车辆库存信息
		{
			examine();    break;
		}
		case 0:  break;// 键入0,结束
		}
	} while (a);
	delete Plural::head;
	Plural::head = NULL;
}

刚开始的进去的时候我们可以选择我们需要进行的服务。
在这里插入图片描述
当我们刚开始选择3的时候,我们没有库存会进行提示并返回。
在这里插入图片描述
当我们选择1服务是,我们可以新增库存,进行填对应的数据,当我们需要退出时输入0进行退出。
在这里插入图片描述
当我们进购完的时候我们可以进行输入3查看库存
在这里插入图片描述
然后我们就可以通过我们的序号进行选择购车了。
在这里插入图片描述
最后值得一提的是,我们链表是一个动态生成节点的,所以我们需要很好的处理我们的上一个指针,不然的话我们后边的数据将会没法获取,还有就是当我们用完的时候我们要将它进行delete,不然的话会泄漏我们的内存。
这是我对链表的理解,如果大家有什么想法、不同之处,欢迎评论留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值