Single Linked List – 单向链表

我们知道,STL的 List 实现的是一个双向链表。

除此之外呢,其实也有一个单向链表的实现,

Single Linked List 和 List 的主要区别还是在于内部实现,或者说,迭代器。

Single Linked List 提供的是Forward Iterator (单向迭代器)

List 提供的是 Bidirectional Iterator(双向迭代器)

所以 Single Linked List 的功能相比List还是少了许多,不过 Single Linked List  所耗的空间更小,某些操作更快。

Single Linked List 同List一样,插入(insert)、移除(erase)、结合(splice)等操作并不会导致原有的迭代器的失效。

当然,指向移除元素的迭代器肯定是会失效的。

还需要注意的是:STL一般规则插入元素是插入在前面,但是Single List没法快速定位前一个位置,这样会对效率产生很大的影响,所以,Single Linked List 提供的是 insert_after() 和 erase_after() 两个函数。

同样的,Single Linked List 不提供 push_back() 这样的从尾部插入的函数,只提供 push_front() 这样的函数,所以插入次序和元素次序会相反。 – 栈可以用单链表来实现。

 

Single Linked List 的节点:

相比List , Single Linked List 的节点设计稍复杂一些:

 

Single Linked List  的迭代器:

唯一要注意的就是是一个单向迭代器吧

 

Single Linked List 的数据结构:

 

关系 Single Linked List:

本想测试元素操作的,但是我的Dev-CPP里面似乎没有 slist这个头文件,VS里面也没有。

于是便放弃了。

这个链表其实就是我们数据结构里面学的单链表。

 

【STL】SList
Tagged on:
0 0 投票数
Article Rating
订阅评论
提醒

0 评论
内联反馈
查看所有评论