
数据结构基础
thinboy.
初学者
展开
-
C/C++用队列实现栈
栈和队列的定义大家都知道吧,栈的定义:百度百科,队列的定义:百度百科。思路:我们都知道栈是先进后出,队列是先进先出,那么我们只需要用队列模拟出先进后出的效果就行了先定义栈class mystack{public: mystack(queue<int>* v1,queue<int>* v2) : q1(v1),q2(v2){} int pop...原创 2019-05-28 15:18:15 · 290 阅读 · 0 评论 -
C/C++用栈实现队列
思路:用两个栈来模拟实现,假设存数据的栈是d,一个辅助的栈是h,那么模拟入队就是直接将数据插入d即可,模拟出队则需要先判断h是否为空,若为空就将d中的数据全部入到h中,再从h中出一个数据,若不为空,直接从h中出一个数据就行。参考代码:class myqueue{public: myqueue(stack<int>* v1,stack<int>* v2) : ...原创 2019-05-28 16:13:10 · 333 阅读 · 0 评论 -
C/C++设计一个栈可以随时返回栈中元素最小值
思路:我们如果直接用一个stack那么每次求最小值肯定得遍历一遍栈复杂度为O(n),我们可以用一个mstack和一个dstack来实现O(1)的复杂度,具体操作入栈时对于mstack来说,先判断mstack是否为空,若为空直接将元素插入mstack,若不为空,如果元素小于mstack栈顶元素入栈,否则不入,出栈时判断出栈元素是否等于mstack栈顶元素,若等于则出栈,否则不出。对于dstack来说...原创 2019-05-28 17:07:44 · 870 阅读 · 0 评论 -
C/C++反转单链表
思路:设三个结点n1,n2,n3,先让n1指向NULL,n2指向链表的第一个结点,n3指向n2->next,然后令n2->next等于n1,n1等于n2,n2等于n3,循环直到最后一个结点参考代码:struct mylist{ int d; mylist* next;};void reverselist(mylist *&h){ mylist...原创 2019-05-28 18:25:03 · 250 阅读 · 0 评论