/*************************************************************************
> File Name: StackImplement.cpp
> Author: Shaojie Kang
> Mail: [email protected]
> Created Time: 2015年09月16日 星期三 10時44分24秒
> Problem: 棧的鏈表實現
************************************************************************/
#include<iostream>
using namespace std;
template <class T>
struct Node
{
T data;
Node *next;
Node(int x): data(x), next(NULL){}
};
template <class T>
class Stack
{
private:
Node<T> *head;
int sizeOfStack;
public:
Stack(): head(NULL), sizeOfStack(0){}
~Stack()
{
while(head != NULL)
{
Node<T> *p = head;
head = head->next;
delete p;
}
}
int size()
{
return sizeOfStack;
}
bool empty()
{
return size() == 0;
}
void push(T x)
{
Node<T> *newNode = new Node<T>(x);
newNode->next = head;
head = newNode;
sizeOfStack++;
}
void pop()
{
if(empty()) return;
Node<T> *p = head;
head = head->next;
delete p;
sizeOfStack--;
}
T top()
{
if(empty()) return -1;
return head->data;
}
};
int main()
{
Stack<int> st;
int arr[] = {
8, 2, 1, 2, 5, 9, 3
};
for(int i = 0; i < 4; ++i)
st.push(arr[i]);
cout<<"size:"<<st.size()<<endl;
st.pop();
cout<<"top:"<<st.top()<<endl;
return 0;
}
棧的鏈表實現(C++)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.