栈的链式表示与实现 ------(链栈)

链栈的存储结构

插入和删除操作仅限制在表头位置上进行;

链栈没有必要像单链表那样附加头节点

栈顶指针就是链栈的头指针

//链栈的存储结构
typedef structt StackNode{
ElemType data;
struct StackNode *Next;
}StackNode,*LinkStack;

LinkStack S;

初始化:

Status InitStack(LinkStack &S )
{
    S=NULL;
        return OK;
}

判断链表是否为空

Status StackEmpty(LinkStack S)
{    if (S==NULL) 
      return TRUE;
      else return FALSE;
}

栈栈进栈

Status Push(LinkStack &S , SElemType e){
        p=(StackNode*)malloc(sizeof(StackNode));      
        if (!p) exit(OVERFLOW);
        p->data=e; 
        p->next=S;
        S=p; 
        return OK; 
}

链栈出栈

Status Pop (LinkStack &S,SElemType &e)
{
if (S==NULL) return ERROR;
 e = S-> data;  p = S;   S =  S-> next;
 free(p);   
return OK;  
}  

 

posted @ 2022-04-30 11:29  fengwan  阅读(131)  评论(0)    收藏  举报