摘要: #include<iostream>using namespace std;template<typename T> class Node{public: T key; Node *pre; Node *next; Node(T x) { key = x; pre = nullptr; next = nullptr; }};template<typename NodeT,typename keyT> class List{public: NodeT *head; bool isEmpty() { if(head == nullptr) return true 阅读全文
posted @ 2013-06-08 18:01 肖恩吃青草 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 用两个队列实现栈,算法导论10.1-7push操作很简单,利用队列的enQueue即可;pop操作要设法将栈顶的元素放置到队列头部,再利用deQueue操作。当进行pop操作时,对当前存储栈元素的队列q1的元素相继进行deQueue操作,再enQueue入另一个空队列q2,直到q1中只剩余一个元素,此时对其进行deQueue操作,即实现了pop。再将两个队列交换名称即可。#include "queue.h"#include <iostream>using namespace std;template<typename T> class StackUs 阅读全文
posted @ 2013-06-08 15:47 肖恩吃青草 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 利用两个栈实现队列,算法导论练习10.1-6enQueue操作很简单,直接利用栈的push操作即可;与栈不同,deQueue操作需要将队列头部的元素删除,此时需要利用第二个栈。要想得到队列的头部元素,就要设法把队列头部的元素设法放到栈顶。当进行deQueue操作时,将存在第一个栈中的所有元素相继弹出,压入第二个栈,这样,原来头部的元素就处在了第二个栈的栈顶,此时pop即可。此时不需要将第二个栈中的元素都弹出再压入第一个栈。可以这样看:将两个栈的栈底连接起来,第二个栈栈顶作为队列头,第一个栈栈顶作为队列尾,相当于两个栈连接起来构成了一个队列。#include "stack.h" 阅读全文
posted @ 2013-06-08 15:45 肖恩吃青草 阅读(153) 评论(0) 推荐(0) 编辑
摘要: //Implementation of queue using dynamic array#ifndef QUEUE_H#define QUEUE_H#include <iostream>using namespace std;template<typename T> class Queue{public: int queueHead; int queueTail; int capacity; T *arr; bool isEmpty() { if(queueHead == queueTail) return true; else return false; } boo 阅读全文
posted @ 2013-06-08 15:43 肖恩吃青草 阅读(327) 评论(0) 推荐(0) 编辑
摘要: //Implementation of stack using dynamic array#ifndef STACK_H#define STACK_H#include <iostream>using namespace std;template<typename T> class Stack{public: int stackTop; int capacity; T *arr; bool isEmpty() { if(stackTop == -1) return true; else return false; } bool isFull() { if(size() = 阅读全文
posted @ 2013-06-08 15:39 肖恩吃青草 阅读(284) 评论(0) 推荐(0) 编辑