线性表(链表)

本文介绍了链表作为数据结构的基本概念,包括单向链表的构成、动态创建链表的过程以及双向链表和循环链表的区别。重点强调了链表的动态性和高效插入/删除特性,以及创建链表的步骤。
摘要由CSDN通过智能技术生成

1.链表

  • 链表是一种常用的数据结构,它通过指针将一些列数据结点,连接成一个数据链。相对于数组,链表具有更好的动态性(非顺序存储链式存储。
  • 数据域用来存储数据,指针域用于建立与下一个结点的联系。
  • 建立链表时无需预先知道数据总量的,可以随机的分配空间,可以高效的在链表中的任意位置实时插入或删除数据。
  • 链表的开销,主要是访问顺序性和组织链的空间损失。

特点:

链表:无需一次性分配一块连续的存储区域,只需分配n块节点存储区域,通过指针建立关系。

优点:(1)不需要一块连续的存储区域。(2)删除和插入某个元素效率高。

缺点:随机访问元素效率低

2.单向链表

        单链表是由结构体变量与结构体变量连接在一起的数据结构。

        链表中的结构体是由数据域和指针域组成的, 而前一个结构体的指针域是指向下一个结构体的,从而将多个结构体连接起来,组成单链表。

struct Node
{
	int data;//结构域(存放数据)
	struct Node*next;//指针域(指向下一个结构体)
};

动态创建一个链表是由动态内存申请和模块化设计(链表的功能,包含的数据)完成。

总的来说,创建一个链表是由一下五个步骤组成

  • 创建链表(创建一个表头表示整个链表)
  • 创建节点
  • 插入节点
  • 删除节点
  • 打印遍历链表(测试)

2.1 创建链表

        首先,我们应该动态创建一个表头来表示整个链表,代码如下:

struct Node* CreateList()
{
    //使用malloc函数动态分配空间
	struct Node* headNode = (struct Node*)malloc(sizeof(Node));
	//headNode->data = 1;由于我们创建的是表头,二表头不存储数据,所以这里不需要数据域
	//headNode成为了一个结构体变量
	headNode->next = NULL;
	return headNode;
}

 

3.双向链表

4.循环链表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值