数据结构复习笔记(二)线性表2单链表

本文是关于线性表链式存储结构——单链表的复习笔记,详细介绍了单链表的基本概念、结构体定义、头插法与尾插法的建表过程,以及单链表的基本操作算法。同时,给出了删除最大值节点和链表逆置的应用实例,探讨了这两种操作的时间复杂度。
摘要由CSDN通过智能技术生成

线性表的链式存储结构称为链表,每个结点不仅包括元素本身信息(数据域),而且也包括元素之间的逻辑关系,称为指针域

1:单链表
在每个结点中除了包含数据域外,还包含一个指针域,用于指向其后继结点.

  • 带头结点的单链表中,头指针head指向头结点,头结点的值域不包含任何信息,后继结点开始存储数据信息.head->next=NULL时,链表为空
  • 不带头结点的单链表中的头指针head指向开始结点,即图中的结点A1,当head=NULL时,链表为空,

注:在带或者不带头结点的链表中,头指针都指向链表的第一个结点,头结点是链表中的第一个结点,只作为链表存在的标志

单链表的基本运算

结构体定义

typedef struct LNode  
{
	ElemType data;
	struct LNode *next;		//指向后继结点
} LinkNode;					//声明单链表结点类型

这里采用有头结点的单链表

头插法与尾插法分析

头插法

  • 从一个空表开始,创建一个头结点。
  • 依次读取字符数组a中的元素,生成新结点
  • 将新结点插入到当前链表的表头上,直到结束为止。
void CreateListF(LinkNode *&L,ElemType a[],int n)
//头插法建立单链表
{
	LinkNode *s;
	L=(LinkNode *)malloc(sizeof(LinkNode));  	//创建头结点
	L->next=NULL;
	for (int i=0;i<n;i++)
	{	
		s=(LinkNode *)malloc(sizeof(LinkNode));//创建新结点s
		s->data=a[i];
		s->next=L->next;			//将结点s插在原开始结点之前,头结点之后
		L->next=s;
	}
}

采用头插法建表时单链表中的数据结点的顺序与数组a中的顺序相反

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值