线性表、栈、队列

线性表、栈、队列

1.线性表

线性表有两种实现方式:顺序表和链表

具体实现见书上66页

顺序表的缺点是大小是事先固定的,当所存元素较少时,浪费很多空间。

链表的缺点是每个结点上附加一个指针开销。

线性表适合查询,访问。

而链表适合插入,删除。

 

还有一种结构是双链表,包括一个prev和一个next指针。

 

2.栈stack

栈是限定仅在一端进行插入或者删除操作的线性表。LIFO:后进先出

栈可访问的元素只有栈顶,操作包括入栈,出栈。

 

栈的实现方式包括顺序栈和链式栈。

3.队列queue

队列元素只能从队尾插入(入队,enqueue),从队首删除(出队,dequeue)。FIFO:先进先出。

队列的实现包括顺序队列和链式队列。

4.字典ADT

定义字典的关键码和可比较对象,可使用顺序表实现字典,也可使用有序顺序表实现字典,取决于所使用的哪种操作更加频繁。

 

STL中有顺序容器:

vector, deque,list, forward_list, array, string

没有特殊情况时最好用vector。

 

一些特殊操作:

c.Push_back(t): forward_list无此操作

c.Emplace_back(args):forward_list无此操作

 

c.Push_front(t):vector or string 无此操作

c.Emplace_front(args):vector or string 无此操作

 

c.Insert(p,t); //insertt befor iterator p

c.insert(p,n,t)//insertn 个 t beforiterator p

c.insert(p,b,e)//insert iterator b 到 e的范围的数 beforiterator p

c.insert(p,i1);//i1是一系列的参数列表,比如: c.insert(c.end(),{4,5,6});

 

赋值时,auto类型十分好用。

 

c.pop_back():remove the last element in c, forward_list无此操作

c.pop_front():removefirst element in c, vector or string 无此操作

 

c.erase(p)

c.erase(b,e)

c.clear();

 

对于forward_list的特殊操作:

Lst.before_begin():iterator denoting nonexistence element befor the begin of the list

Lst.cbefor_begin():

 

Lst.insert_after(p,t)

Lst.insert_after(p,n,t)

Lst.insert_after(p,b,e)

Lst.insert_after(p.i1)

 

Emplace_after(p,args)

 

Lst.erase_after(p)

Lst.erase_after(b,e);(b,e之间不包括b,e)

 

c.resize(n);

c.resize(n,t);

 

除此之外,还有stack,queue,priority_queue的应用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值