链表其实真的不难!!(C++版创建链表并完成节点的插入与删除)

本文介绍了链表的基本概念,并通过C++展示了如何创建链表、输出链表,以及如何在链表中插入和删除节点。通过实例代码详细解释了链表操作的过程。
摘要由CSDN通过智能技术生成

链表——数据结构里的最基本单元,所以及见面了找工作/找实习的你,对链表最基本的知识与应用又了解多少呢?
不妨花个几分钟看完这篇,或许会有意想不到的收获!
首先什么是链表?
链表就是在系统内存中开辟的逻辑上连续但是物理上(或者是实际上)非连续的一个个空间,然后这些空间都又一个个指针连接起来,啥意思呢?来看个图吧,纯属直观手绘(虽然有点丑但是够形象)!
在这里插入图片描述
所以,我们可以很直观的看出,要创建一个链表,我们需要的元素就是这个框框(内存),还有这个箭头(指针),至于框框里面放的是什么?那肯定是内容啦!所以我们要将这些元素组织成一个结构体struct描述他们(当天组织成一个类class也是完全可以的),这里我们就创建一个链表来放学生信息吧

//首先组织结构体,这里我们别名这个结构体为Student只是为了我们后面书写简单
typedef struct node {
   
	//表示数据域
	int age;
	char name[20];
	//表示指针域
	struct node* next;
}Student;

接着我们就来创建这个链表:

Student* creatList(int n) {
   
	//在堆上动态申请一个头节点,一般头节点不存储数据。(如果在栈上申请的话,调用一次creat之后就会被释放掉)
	Student* head = new Student;
	//构造一个pre节点用来记录上一个节点,(每构造一个新的节点都需要上一个节点指向这个新创建的节点,pre最开始等于p的上一个节点也就是head节点)
	Student* pre = head;
	//构造节点
	for (int i = 0; i < n; i++)
	{
   
		Student* p = new Student; //创建n个节点
		printf("请输入%d个学生的姓名和年龄:", i + 1);
		cin >> p->name;
		cin >> p->age;
		
		pre->next = p;
		pre = p;
		//到最后需要加一个判断条件 迭代判断看是否到达最后一个节点
		p->next = NULL; 
	}
	return head;
}

然后我们写出输出函数:

void display(Student* head)
{
   
	Student* p = head->next;
	while (p != NULL)
	{
   
		cout << p->name << "," 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值