数据结构顺序表——单向无头链表

链表概念

概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。

链表也是顺序表的一种。

主要和数组顺序表对比。

链表有单向、双向;带头、不带头;循环、不循环几种,可以有8种组合:
8种链表

实际中最常用的两种结构是单向无头链表和双向带头循环链表这两种结构
图示
这里实现这两种链表

单链表结构定义

typedef int SLTDataType;
typedef struct SListNode
{
   
	SLTDataType data;
	struct SListNode* next;
}SLTNode;

需要实现的单链表的接口有

  1. 动态申请节点
  2. 打印
  3. 尾插
  4. 尾删
  5. 头插
  6. 头删
  7. 查找
  8. 插入(pos前插入和pos后插入)
  9. 删除pos位置节点

申请节点

SLTNode* BuyListNode(SLTNode x)
{
   
	SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));
	if(newnode == NULL)
	{
   
		perror("malloc fail");
		exit(-1);
	}
	newnode->data = x;
	newnode->next =NULL;

	return newnode;
}

单链表打印

void SListPrint(SLTNode* phead)
{
   
	SLTNode* cur = phead;
	while(cur != NULL)
	{
   
		printf("%d->", cur->data);
		cur = cur->next;
	}
	printf("NULL\n");
}

单链表尾插

虽然无头单链表由于没有哨兵节点(头节点)使得在实际代码中需要分别处理链表为空和不为空的情况比较麻烦,正是为了处理空链表尾插的情况我们需要二级指针给函数。(如果使用返回值返回插入后的链表则可以传一级指针)
但是时间复杂度是O(1),这一点和顺序表一样。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值