您的位置:首页 > 编程语言 > C语言/C++

栈的顺序存储实现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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息