数据结构之栈_Stack
来源:互联网 发布:excel数据统计图 编辑:程序博客网 时间:2024/06/05 15:33
#ifndef STACK_H_INCLUDED
#define STACK_H_INCLUDED
#include<iostream>
template <class T>
struct Node
{
T data;
Node<T>* next;
Node(const T& item, Node<T>* nxt = NULL) :data(item), next(nxt){}
};
#define STACK_H_INCLUDED
#include<iostream>
template <class T>
struct Node
{
T data;
Node<T>* next;
Node(const T& item, Node<T>* nxt = NULL) :data(item), next(nxt){}
};
template <class T>
class Stack
{
private:
Node<T>* top;
int size;
public:
Stack<T>() : size(0), top(NULL) {}
~Stack<T>();
T Top();
void Pop();
void Clear();
void Delete(const T& item);
void Push(const T& item);
Node<T>* Search(const T& item);
bool Empty(){ return top == NULL; }
int GetSize()const{ return size; }
void Show();
};
template <class T>
Stack<T>::~Stack()
{
Node<T>* p = top;
while (p != NULL)
{
top = p->next;
delete p;
p = top;
Stack<T>::~Stack()
{
Node<T>* p = top;
while (p != NULL)
{
top = p->next;
delete p;
p = top;
}
}
}
template <class T>
void Stack<T>::Push(const T& item)
{
if (top == NULL)
{
top = new Node<T>(item);
}
else
{
Node<T>* newTop = new Node<T>(item,top);
top = newTop;
}
size++;
}
template <class T>
void Stack<T>::Pop()
{
if (Empty())
{
std::cout << "栈已空";
return;
}
void Stack<T>::Pop()
{
if (Empty())
{
std::cout << "栈已空";
return;
}
size--;//肯定存在此节点
Node<T>* p = top;
top = top->next;
delete p;
Node<T>* p = top;
top = top->next;
delete p;
}
template <class T>
T Stack<T>::Top()
{
return top->data;
}
template <class T>
Node<T>* Stack<T>::Search(const T& item)
{
Node<T>* p = top;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
T Stack<T>::Top()
{
return top->data;
}
template <class T>
Node<T>* Stack<T>::Search(const T& item)
{
Node<T>* p = top;
while (p != NULL)
{
if (p->data = item)
return p;
p = p->next;
}
return NULL;
}
template <class T>
void Stack<T>::Delete(const T& item)
{
Node<T>* p = Search(item);
if (p == NULL)
{
std::cout << "无此节点";
return;
}
size--;//肯定存在此节点
Node<T>* q = top;
if (p == q)
{
top = p->next;
delete p;
return;
}
Node<T>* q = top;
if (p == q)
{
top = p->next;
delete p;
return;
}
while (q->next != p)
q = q->next;
q = q->next;
q->next = p->next;
delete p;
delete p;
}
template <class T>
void Stack<T>::Clear()
{
Node<T>* p = top;
while (p != NULL)
{
top = p->next;
delete p;
p = top;
void Stack<T>::Clear()
{
Node<T>* p = top;
while (p != NULL)
{
top = p->next;
delete p;
p = top;
}
top = NULL;
top = NULL;
}
template <class T>
void Stack<T>::Show()
{
Node<T>* p = top;
while (p != NULL)
{
std::cout << p->data << " ";
p = p->next;
}
}
#endif
void Stack<T>::Show()
{
Node<T>* p = top;
while (p != NULL)
{
std::cout << p->data << " ";
p = p->next;
}
}
#endif
1 0
- 数据结构之栈_Stack
- C++数据结构 之 栈_Stack
- 【数据结构】顺序栈_Stack
- 大话数据结构 code 第四章 01顺序栈_Stack
- 栈_STACK的实现
- java容器之四_stack
- 模板:<bits/_Stack.h>
- C#_Stack的使用方法
- java数据结构之栈
- 数据结构之顺序栈
- 数据结构之链栈
- 数据结构之栈
- 数据结构复习之【栈】
- 数据结构之栈
- 数据结构之栈
- 数据结构之栈实现
- 数据结构学习之栈
- 数据结构之栈
- 深度学习目前进展和理解
- ajax-瀑布流效果
- DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较
- 如何使用reg命令修改注册表
- Linux 进程管理
- 数据结构之栈_Stack
- 深入理解JDBC的超时设置
- 错排数
- Access、Hybrid和Trunk三种模式的理解
- UVA 11584 Partitioning by Palindromes
- 【bzoj3942】 [Usaco2015 Feb]Censoring KMP
- JS对象与json字符串格式转换实例
- Java的一些基本概念
- 维护之WIFI-2000安全策略对应