首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于list跟slist

2013-11-30 
关于list和slistlist中为了保证push_back()的时间复杂度是O(1),在list对象中定义了一个尾节点,可以slist压

关于list和slist
list中为了保证push_back()的时间复杂度是O(1),在list对象中定义了一个尾节点,可以slist压根就只有push_front,而放弃了push_back()。这是不是说明slist对象中压根就没有尾节点。那他为什么不搞一个呢。用push_front毕竟导致插入顺序和输出顺序相反。关于list跟slist STL
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Slist是单向链表,非标准容器。list是双向链表。

...敢说些有用的么?

slist不是每个编译器都有, 这就是非标准容器.它是单向链表, 只支持前向遍历, 同时记住两端没有意义。  


不记录尾结点的单链表,可以用来实现栈
记录尾结点的单链表,可以用来实现队列

意义是有的,看你要怎么用,是否记录尾结点跟单链表还是双链表没有必然联系

双链表更大的意义在于:你在链表中途插入或者删除结点时不用做遍历


slist不是适配的容器, 不大可能会用栈和队列来实现。 说出记住/不记住的意义吧, lz的问题正是这个.


我说的就是记住/不记住的意义:

记住尾结点的这样一个链表,我们可以用它来实现一个队列的功能啊,
有头结点有尾结点我们可以更方便的实现先进先出

不记住尾结点,只有头结点,那更多的我们可能只能拿来当栈用,先进后出
没有记录尾结点的链表,如果你要拿他做队列用的话,不就需要遍历了么

而且,队列和栈这种没有中途插入删除需求的容器,也不需要用到双链表


热点排行