这周还是dp,另外还有栈和队列的训练,栈和队列接触的比较早,在社团的时候学长就讲过,然后费老师又在网课上讲过,但是一直没怎么训练,用起来也不熟练,这次的的训练也加深了对栈和队列理解和运用。
过一遍栈和队列,还有优先队列的知识。
栈(stack)
栈是一种先进后出的数据结构,它只有一个出口,只能操作最顶端元素。类似于木桶,只能从顶端放入,顶端取出。
用法:
头文件:#include
定义:stacka;
操作:
a.empty():当栈内为空时返回值为1,非空是返回值为0。
a.size():返回栈内元素个数。
a.push():向栈内压入一个元素。
a.pop():去除栈顶元素。
a.top():访问栈顶元素。
队列(queue)
队列时一种先进后出的数据结构,从底端加入元素,顶端取出元素。类似平常生活中的排队情况。
用法:
头文件:#include
定义:queuea;
操作:
a.empty():判断队列是否为空,返回值为bool类型。
a.size():返回队列内元素个数。
a.push():向队尾压入一个元素。
a.pop():移除队首元素。
a.front():返回队列中的第一个元素(队首)。
a.back():返回队列内最后一个元素(队尾)。
优先队列(priority_queue)
一个拥有权值观念的queue,自动依照元素的权值排列,权值最高排在前面。缺省的情况下,priority_queue是利用一个max_heap完成的。
头文件:#include
定义:priority q;
操作:q.push(elem):将元素elem置于优先队列。
q.top():返回优先队列的下一个元素。
q.pop():移除一个元素。
q.size()返回队列中元素的个数。
q.empty():返回优先队列是否为空。
本来感觉可以把训练和vj上的题一起做完的,但是做完栈和队列后…
有点笨
明天接着做