【数据结构】链表(含链式前向星)

  链表为什么断不了?是拿振金做的吗?
  说了队列,说了栈,无论什么数据结构都离不开只能按一定顺序储存的结果,向特定位置加入某值的复杂度达不到 O ( 1 ) O(1) O(1)天空一声巨响,链表闪亮登场 链表就是这千千万万数据结构中的一个例外。

  链表的模型就是一条链(废话)!我们可以向这条链的任意一个地方加入一个新的节点,也可以删除任意的一个节点。

1.模型

  链表,顾名思义,是以链的形式来储存一个表。而这个链就很有意思了,有条件的可以哪一个项链看一下,我们从任意一个节点出发,都可以直接找的它前后的节点,为了满足这个性质,我们可以对每个节点增加两个储存的量:指向前一个点的指针 f r o m from from,指向后一个点的指针 t o to to 。这样,每个点除了储存这个点的值,还储存了分别指向前后点的指针。

  可以发现,项链总有个首尾,链表也一样。我们可以设立两个坐标,代表链表的头和链表的尾,即 h e a d head head t a i l tail tail 坐标。我们链表的第一个节点的前节点指针指向 h e a d head head 坐标,最后一个节点的后节点指针指向 t a i l tail tail 坐标。所以链表的模型如图所示:在这里插入图片描述
代码:

/*指针版*/						/*下标版*/
struct link {
   					struct link{
   
	int value;/*数据*/				int value;/*数据*/
	link* from, to;/*指针*/ 		int from, to;/*指针*/ 
};/*数据结构*/					}Link[Size];/*数据结构*/	

link* head, tail;				int head, tail, tot;

void init() {
   					void init() {
   					
	head = new link();				head = 1, tail = 2;
	tail = new link();				tot = 2;
	head->to = tail;				Link[head].to = tail;
	tail->from = head;				Link[tail].from = head;
}/*初始化链表*/					}

2.操作

1.添加节点

  由于链表的性质,链表的添加节点操作支持在任意一个你能找到的节点添加。

  当我们在某一位置添加节点时,我们需要知道这个位置所对应的的 f r o m

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值