目录
1.栈
#include <iostream>
using namespace std;
template <class T>
class Stack
{
protected:
T *element;
int top;
int capcity;
public:
Stack()
{
top = -1;
capcity = 2;
element = new T[capcity];
}
~Stack()
{
delete[] element;
}
void resize(int newCapcity)
{
T *newElement = new T[newCapcity];
for (int i = 0; i <= top; i++)
newElement[i] = element[i];
delete[] element;
element = newElement;
capcity = newCapcity;
}
void push(T value)
{
if (top >= capcity - 1)
resize(2 * capcity);
element[++top] = value;
}
bool isEmpty()
{
if(top==-1)
return true;
return false;
}
void pop()
{
if(isEmpty())
return ;
top--;
if(top<capcity/4)
resize(capcity/2);
}
T get_top()
{
if(isEmpty())
{
cout<<"Stack is Empty"<<endl;
return 0;
}
return element[top];
}
int size()
{
return top+1;
}
};
2.队列
#include <iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node<T> *next;
Node<T> *prev;
Node(T _data = 0) : data(_data), next(nullptr), prev(nullptr) {}
};
template <class T>
class Quene
{
protected:
Node<T> *pHead;
Node<T> *pTail;
int size;
public:
Quene():pHead(new Node<T>),pTail(new Node<T>),size(0)
{
pHead->next=pTail;
pTail->prev=pHead;
}
~Quene()
{
Node<T>* node=pHead->next;
while(node!=pTail)
{
node=node->next;
delete node->prev;
}
delete pHead;
delete pTail;
pHead=nullptr;
pTail=nullptr;
}
void printQuene()
{
Node<T> *node = pHead->next;
while(node != pHead)
{
cout << node->data<<endl;
node = node->next;
}
}
void push(T data)
{
Node<T> *Data=new Node<T>(data);
pTail->prev->next=Data;
Data->prev=pTail->prev;
Data->next=pTail;
pTail->prev=Data;
size++;
}
void pop()
{
if(isEmpty())
return ;
Node<T> *node=pHead->next;
pHead->next=node->next;
node->next->prev=pHead;
delete node;
size--;
}
bool isEmpty()
{
if(!size)
return true;
return false;
}
T peek()
{
if(isEmpty())
return 0;
return pHead->next->data;
}
int getsize()
{
return size;
}
};

被折叠的 条评论
为什么被折叠?



