您的位置:首页 > 理论基础 > 数据结构算法

数据结构顺序栈和链栈基本操作----c++实现

2012-11-25 16:48 417 查看
顺序栈:

#include<iostream>
using namespace std;
#define MaxSize 50
class SeqStack{
private:
int data[MaxSize];
int top;
public:
void initStack();	//初始化栈
void Push(int elem);//入栈
int  Pop();//出栈
bool isEmpty();//判断栈是否为空
int getLength();//得到栈的长度
void visit();//遍历栈里的数据
};
void SeqStack::initStack()
{
for(int i=0;i<MaxSize;i++)
data[i]=0;
top=-1;
}
void SeqStack::Push(int elem)
{
if(top==MaxSize)
return;
top++;
data[top]=elem;
}
int SeqStack::Pop()
{
if(top==-1)
return 0;
int elem= data[top];
top--;
return elem;
}
bool SeqStack::isEmpty()
{
if(top==-1)
return true;
else return false;
}
int SeqStack::getLength()
{
return top++;
}
void SeqStack::visit()
{
while(!isEmpty())
cout<<Pop()<<"  ";
}


链栈:

#include<iostream>
using namespace std;
struct linkStack{
char data;
linkStack *next;
};
//链栈的初始化
linkStack * initStack()
{
linkStack *top=new linkStack;
top=NULL;
return top;
}
//判断链栈是否为空
bool isEmpty(linkStack *stack)
{
if(NULL==stack)
return true;
return false;
}
//链栈入栈
linkStack * push(linkStack *stack,char data)
{
linkStack *node=new linkStack;
node->data=data;
node->next=stack;
stack=node;
return stack;
}
//链栈出栈
linkStack * pop(linkStack *stack)
{
if(stack!=NULL)
{
cout<<stack->data;
stack=stack->next;
}else
cout<<"是空栈!";
return stack;
}
//链栈的长度
int getLength(linkStack *stack)
{
int length=0;
if(stack==NULL)
return 0;
while(stack!=NULL)
{
length++;
stack=stack->next;
}
return length;
}
//取出栈顶元素
int getTop(linkStack *stack)
{
int temp;
temp=stack->data;
return temp;
}

int main()
{
linkStack *stack=initStack();

for(int i=0;i<9;i++)
{
char c=i+96;
stack=push(stack,c);
}
for(int j=0;j<9;j++)
{
stack=pop(stack);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: