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

来源:互联网 发布:淘宝上怎么换货啊 编辑:程序博客网 时间:2024/06/05 19:25

顺序栈:

#include<iostream>using namespace std;#define MaxSize 50class 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;}



原创粉丝点击