栈的顺序存储实现c++
2017-11-30 21:46
253 查看
栈的顺序存储
栈的基本操作 c++实现
#include<stdio.h>
using namespace std;
/* typedef struct Stack
{
SElemType *base;//栈底指针构造之前销毁之后,base=NULL
SElemType *top;
//栈顶指针
int stacksize;
}Stack;*/
class Stack
{
private:
char *stack_Buffer; //空间指针
int stack_size;
int stack_top;
public :
Stack(int size)
{
stack_size=size;
stack_Buffer=new char[size];
stack_top=0;
}
~Stack()
{
delete []stack_Buffer;
stack_size=0;
}
void ClearStack()
{
stack_top=0;
}
bool EmptyStack()
{
if(0==stack_top) return true;
else return false;
}
bool FullStack()
{
if(stack_size==stack_top) return true;
else return false;
}
int StackNumber()
{
return stack_top;
}
void push(char elem)
{
if(!FullStack())
{
stack_Buffer[stack_top]=elem;
stack_top++;
}
else printf("fullstack");
}
void pop(char &elem)
{
if(!EmptyStack())
{
stack_top--;
elem=stack_Buffer[stack_top];
}
else printf("emptystack");
}
void StackTraverse()
{
for(int i=0;i<stack_top;i++)//由栈顶遍历至栈底
{
printf(" %c",stack_Buffer[i]);
}
printf("\n");
/* for(int i=stack_top-1;i>=0;i--)
{
printf("%c",stack_Buffer[i]);//由栈底遍历至栈顶
} */
}
};
int main()
{
char elem;
Stack *stack=new Stack(6);
if(!stack->EmptyStack()) printf("emptystack\n");
if(stack->FullStack()) printf("fullstack\n");
stack->push('s');stack->push('t');
stack->push('a');stack->push('c');
stack->push('k');stack->push('!');
printf("栈中元素个数:%i\n",stack->StackNumber());
stack->StackTraverse();
stack->pop(elem);
printf("%c\n",elem);
printf("栈中元素个数:%i\n",stack->StackNumber());
stack->StackTraverse();
delete stack;
return 0;
}
栈的基本操作 c++实现
#include<stdio.h>
using namespace std;
/* typedef struct Stack
{
SElemType *base;//栈底指针构造之前销毁之后,base=NULL
SElemType *top;
//栈顶指针
int stacksize;
}Stack;*/
class Stack
{
private:
char *stack_Buffer; //空间指针
int stack_size;
int stack_top;
public :
Stack(int size)
{
stack_size=size;
stack_Buffer=new char[size];
stack_top=0;
}
~Stack()
{
delete []stack_Buffer;
stack_size=0;
}
void ClearStack()
{
stack_top=0;
}
bool EmptyStack()
{
if(0==stack_top) return true;
else return false;
}
bool FullStack()
{
if(stack_size==stack_top) return true;
else return false;
}
int StackNumber()
{
return stack_top;
}
void push(char elem)
{
if(!FullStack())
{
stack_Buffer[stack_top]=elem;
stack_top++;
}
else printf("fullstack");
}
void pop(char &elem)
{
if(!EmptyStack())
{
stack_top--;
elem=stack_Buffer[stack_top];
}
else printf("emptystack");
}
void StackTraverse()
{
for(int i=0;i<stack_top;i++)//由栈顶遍历至栈底
{
printf(" %c",stack_Buffer[i]);
}
printf("\n");
/* for(int i=stack_top-1;i>=0;i--)
{
printf("%c",stack_Buffer[i]);//由栈底遍历至栈顶
} */
}
};
int main()
{
char elem;
Stack *stack=new Stack(6);
if(!stack->EmptyStack()) printf("emptystack\n");
if(stack->FullStack()) printf("fullstack\n");
stack->push('s');stack->push('t');
stack->push('a');stack->push('c');
stack->push('k');stack->push('!');
printf("栈中元素个数:%i\n",stack->StackNumber());
stack->StackTraverse();
stack->pop(elem);
printf("%c\n",elem);
printf("栈中元素个数:%i\n",stack->StackNumber());
stack->StackTraverse();
delete stack;
return 0;
}
相关文章推荐
- 顺序存储线性表的C++实现——严蔚敏版《数据结构》
- C++学习总结——顺序存储,链式存储,索引存储,哈希存储的优缺点,以及vector数组,list链表,十字链表,索引结构,hash表的实现
- 线性表顺序存储(C++ 实现)
- 栈(顺序存储)C++模板实现
- 队列(顺序存储)C++模板实现
- c++ 顺序存储和链表存储 栈的实现代码
- 数据结构与算 5:C++ 顺序/链式存储,栈 模板类实现,编译模板类问题解决
- C++实现顺序栈之两栈共享存储空间
- 堆栈顺序存储的c++实现与测试
- c++实现顺序存储的队列
- 小项目之用C++实现以顺序表存储的大数运算
- 队列的顺序存储及实现(C++版)
- 数据结构之循环队列(顺序表存储)——C++模板类实现
- c++模板类实现线性表顺序存储
- C++实现循环队列之顺序存储
- 线性表的顺序存储实现c++
- C++实现顺序存储的线性表
- C++ 单链表基本操作分析与实现 链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结
- 对面试题“输入n,求一个nXn矩阵,规定矩阵沿45度递增,形成一个zigzag数组(JPEG编码里取像素数据的排列顺序),请问如何用C++实现?”的理解
- 线性结构的顺序存储和链式存储的实现代码(二)