单链表的基本操作 ʕ •ᴥ•ʔ

这篇博客探讨了单链表的基本操作,将其与一维数组进行对比,并重点解析了在创建链表时可能遇到的困惑。通过图表辅助说明,阐述了如何使用指针来操作链表,特别是如何通过p->data访问数值域,以及如何通过p->next指向下一个节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 这个大概设计思想和一维数组差不多 只不过这个大部分都是用指针来进行的  当时比较懵的地方是在创建的时候  下面画图解释

 -> 相当于结构体中的 .  由于是指针 所有不能用 .

p->data 代表p的数值域 

p->next 代表p的指针域 指向下一个指针 (A的->next指向的是B)

#include<iostream>  
#include<algorithm> 
using namespace std;
struct Lnode    //数据节点
{
	int data;
	Lnode *next;
};

void InitList(Lnode *&L)   //创建空的单链表
{
	L = (Lnode *)malloc(sizeof(Lnode));
	L->next = NULL;
} 

int ListLength(Lnode *L)                  //返回单链表的长度
{
	int ans = 0;
	Lnode *p = L;                         //(要注意是Lnode * p = L)
	while (p->next != NULL)              //如果 下一个节点不为空,肯定是有数据存储的,于是ans++;
	{
		ans++;
		p = p->next;
	}
	return ans;
}

void CoutList(Lnode *L)                    //输出每个节点的信息
{
	Lnode *p = L->next;                 //从头开始(要注意是Lnode *p = L->next)
	while (p != NULL)                       //如果当前节点不为空,则 输出信息
	{
		printf("%d", p->data);
		p = p->next;
	}
}

bool GetElem(Lnode *L, int i, int &e)             //修改某个位置上的数据信息
{
	int j = 0;
	Lnode *p = L;
	while (j < i && p != NULL)                          //如果没有遍历到i-1并且链表没有结束
	{
		j++;                                        //接着找
		p = p->next;
	}
	if (p == NULL)                  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值