C和C++实现Stack
2007-09-09 16:21
603 查看
/************************************************************************/
/* 使用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>
/* 使用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>
相关文章推荐
- C++ template--类模版Stack的实现
- C++ 用数组实现stack,queue
- 【C++ STL应用与实现】12: 如何使用std::stack
- C和C++实现Stack
- 我的C++实践(1):Stack的实现
- C++用数组和链表分别实现Stack
- 我的Stack实现(用C++实现),模仿STL的Stack实现,但是不用容器类
- 栈 (Stack) 的C++实现(链表方法)
- 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)
- stack的简单用法举例(C++实现)
- 我的C++实践(1):Stack的实现
- Stack的c++实现(不完整)
- C++ 队列(queue)堆栈(stack)实现基础
- C++实现stack【栈】
- 我的C++实践(1):Stack的实现
- C++ 使用单向链表实现Stack
- 从零开始学C++之模板(二):类模板、Stack的类模板实现(自定义链栈方式,自定义数组方式)
- stand C++ stack 的实现源码
- C++:栈(stack)的模板类实现
- C++用数组和链表分别实现Stack