C和C++实现Stack
2013-12-21 16:55
162 查看
C和C++实现Stack
分类: 2. C/C++2007-09-0916:21 2066人阅读 评论(2) 收藏 举报
c++cstructnullclass语言
/************************************************************************/
/* 使用c++实现Stack */
/************************************************************************/
#include <stdio.h>
class Stack
{
public:
Stack();
~Stack();
void Push(void* data);
void* Pop();
protected:
typedef struct elementT {
struct elementT* next;
void* data;
}element;
element* firstElement;
};
Stack::Stack() {
firstElement = NULL;
return;
}
Stack::~Stack() {
element* next;
while (firstElement)
{
next = firstElement->next;
delete firstElement;
firstElement = next;
}
return;
}
void Stack::Push(void* data) {
element* ele = new element;
ele->data = data;
ele->next = firstElement;
firstElement = ele;
return;
}
void* Stack::Pop() {
element* popElement = firstElement;
void* data;
if (firstElement == NULL)
{
//handle the error
//throw StackError(E_EMPTY);
}
data = firstElement->data;
firstElement = firstElement->next;
delete popElement;
return data;
}
/************************************************************************/
/* 使用c语言实现Stack */
/************************************************************************/
#include <memory>
typedef struct elementT {
struct elementT* next;
void* data;
}element;
int CreateStack(element **stack)
{
*stack = NULL;
return 1;
}
int Push(element** stack, void* data)
{
element* ele;
ele = (element*) malloc(sizeof(element));
if (!ele)
{
return 0;
}
ele->data = data;
ele->next = *stack;
*stack = ele;
return 1;
}
int Pop(element** stack, void** data)
{
element* ele;
if (!(ele = *stack))
{
return 0;
}
*data = ele->data;
*stack = ele->next;
free(ele);
return 1;
}
int DeleteStack(element** stack)
{
element* next;
while (*stack)
{
next = (*stack)->next;
free(*stack);
*stack = next;
}
return 1;
}
</memory></stdio.h>
相关文章推荐
- stand C++ stack 的实现源码
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- Stack的c++实现(不完整)
- 我的C++实践(1):Stack的实现
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- Stack与Queue的实现(c++模板实现)
- c++中栈的基本实现stack
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- C++ template--类模版Stack的实现
- c++中实现类似java printStackTrac…
- 栈 (Stack) 的C++实现(链表方法)
- 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)
- C++ 使用单向链表实现Stack
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
- 逆波兰算法 C++——String及Stack实现
- c++模板实现Stack
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- C++ 队列(queue)堆栈(stack)实现基础
- Stack 的C++实现