随笔分类 - 数据结构与算法分析
摘要:问题:仅仅使用一个数组实现两个栈的例程;除非数组每个单元都被使用,否则不能出现溢出声明。思路: 假设存在两个栈P与Q,栈P以数组首地址为栈头,其从数组头向数组尾部增长; 栈Q以数组尾部为栈尾,其从数组尾部向头部增长。代码:struct Node;typedef Node *ComSt...
阅读全文
摘要:题目一: 不含头结点的单链表转置,算法时间复杂度O(N)代码如下:struct LNode;typedef struct LNode *List;typedef struct LNode *Position;struct LNode{ ElementType elem; Position...
阅读全文
摘要:代码:#include templatelist Intersect(const list &list_1, const list &list_2){ list result; auto leftPos = list_1.begin( ); auto rightPos = list...
阅读全文
摘要:思路: 对于p(x)中的每一个因式,与q(x)中每一个因式相乘的结果,保存于另外的链表中; 对于保存结果的链表排序,并去重,即去除系数相同的因式结点,但系数相加代码:#include using namespace std;struct Node{ int coefficient ...
阅读全文
摘要:一、题目 编写支持双端队列的例程,插入与弹出操作均花费 O(1)时间二、解答 双端队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。 双端队列中的元素可以从两端弹出,插入和删除操作限定在队列的两边进行。 基本操作:在双端队列两端插入与删除。 ADT...
阅读全文
摘要:一、题目 用一个数组实现三个(或多个)栈二、解答 用一个数组实现三个乃至多个栈,如果想使用一个数组构造两个栈的思想则行不通; 考虑使用静态链表,数组结点中存在两个域,关键字域与指示栈的前驱的游标,则可以使三个栈可以用一个数组表示; ADT的关键术语: Capacity: 数组的容量; S...
阅读全文

浙公网安备 33010602011771号