链栈的定义、初始化、出栈、入栈等操作

#include

using namespace std;

 

 

/*链栈的定义*/

typedef struct sNode

{

       char data;

       struct sNode * next;

}sNode;

 

typedef sNode *linkStack;

 

 

/*初始化链栈*/

void initStack_L(linkStack &S)

{

       S=new sNode;

       S->next=NULL;

}

 

 

/*建立一个链栈*/

void creatStack_L(linkStack &S,int n)

{

       initStack_L(S);

       for(int i=0;i

       {

              sNode *q=new sNode;

              cin>>q->data;

              q->next=S->next;

              S->next=q;

       }

}

 

 

/*销毁链栈*/

 void destroyStack_L(linkStack &S)

 {

        while(S)

        {

               sNode *q;

               q=S;

               S=S->next;

               delete q;

        }

 }

 

 

 /*求栈长*/

 int lengthStack_L(linkStack &S)

 {

        sNode *q;

        int count;

 

        q=S;

        count=0;

        while(q->next)

        {

               count++;

               q=q->next;

        }

        return count;

 }

 

 /*入栈*/

 void pushStack_L(linkStack &S,char x)

 {

        sNode *q=new sNode;

        q->data=x;

        S->next=q;

        q->next=S->next;//此处不用考虑栈满的情况。

 }

 

 /*出栈*/

 char popStack_L(linkStack &S)

{

       if(S->next==NULL)

       {

              cout<<"Satck Empty!";

       }//此处得考虑栈空的情况。

 

       sNode *q;

       char e;

 

       q=S->next;

       e=q->data;

       S->next=q->next;

       delete q;

       return e;

}

 

 

void main()

{

       linkStack S;

       creatStack_L(S,6);

       cout<

       pushStack_L(S,'a');

       cout<

}

你可能感兴趣的:(数据结构)