链表学习:静态链表

链表的概念:

链表由一系列节点组成,其中每个节点包括两个域,一个是数据域,用来存储数据,另一个是指针域,用来存储下一个节点的地址,链表在内存中是非连续的
例如:

struct LinkNode
{
		int age;//定义数据域
		struct LinkNode*next;//定义指针节点,指向下一个节点首地址
};

链表在指定位置插入与删除元素不需要移动元素,只需要修改指针即可,而数组删除与加入元素则需要移动后面的元素,链表相对于数组来讲,则多了指针域空间开销,拿到链表第一个节点就相当于拿到整个链表

链表的分类:

链表的分类:静态链表,动态链表
单向链表,双向链表,循环链表,单向循环链表,双向循环链表

链表和数组的区别:

数组:一次分配一块连续的存储空间
优点:随机访问元素效率高
缺点:(1)需要分配一块连续的存储区域(很大区域,有可能分配失败)
(2)删除和插入某个元素效率低
链表:无需一次性分配一块连续的内存区域,只需分配n快节点存储区域,通过指针建立关系
优点:(1)不需要一块连续的存储区域
(2)删除和插入某个元素效率高
缺点:随机访问元素效率低

静态链表的简单使用:

#include<stdio.h>
//链表结点定义
struct LinkNode
{
	int data;//定义链表数据
	struct LinkNode*next;//定义链表节点
};
void test()
{
	struct LinkNode node1 = { 10,NULL };
	struct LinkNode node2 = { 20,NULL };
	struct LinkNode node3 = { 30,NULL };
	struct LinkNode node4 = { 40,NULL };
	struct LinkNode node5 = { 50,NULL };
	struct LinkNode node6 = { 60,NULL };
	node1.next = &node2;
	node2.next = &node3;
	node3.next = &node4;
	node4.next = &node5;
	node5.next = &node6;
	//如何遍历链表:定义一个辅助指针
	struct LinkNode* pCurrent = &node1;
	while (pCurrent != NULL)
	{
		//打印数据
		printf("%d ", pCurrent->data);
		//指针移动到下一个元素的首地址
		pCurrent = pCurrent->next;
	}
	
}
int main()
{
	test();
	return 0;
}

(本文是个人学习心得,如有错误还请多多指出)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值