链栈的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了链栈的实现相关的知识,希望对你有一定的参考价值。

  链栈即链式栈,也就是说我们不用再考虑空间的大小,可随心所欲的进行数据的插入/删除了。和顺序栈一样,仍然要保持其stack的特性,只在一端进行插入和删除,后进先出。

  示例代码:

技术分享
#ifndef  _LINKSTACK_H
#define _LINKSTACK_H

typedef int ElemType;
typedef int Status;

typedef struct linkStack
{
    ElemType data;
    struct linkStack * top;
}linkStack;

linkStack * CreateStack();
Status MakeEmpty();
int IsEmpty();
Status Push();
Status Pop();
ElemType Top();

#endif
linkstack.h
技术分享
/* linkstack.c */
#include <stdio.h>
#include <stdlib.h>
#include "linkstack.h"

linkStack * CreateStack()
{
    linkStack * S;
    S = (linkStack *)malloc(sizeof(linkStack));
    S -> top = NULL;
    MakeEmpty(S);
    return S;
}

Status MakeEmpty(linkStack * S)
{
    if(S == NULL)
    {
        return FALSE;
    }
    else
    {
        while(!IsEmpty(S))
            Pop(S);
    }
    return TRUE;
}

int IsEmpty(linkStack * S)
{
    return S -> top == NULL;
}

Status Push(linkStack * S, ElemType Data)
{
    linkStack * p;
    p = (linkStack *)malloc(sizeof(linkStack));
    p -> data = Data;
    p -> top = S -> top;
    S -> top = p;
    return TRUE;
}

Status Pop(linkStack * S)
{
    linkStack * p;
    if(IsEmpty(S))
        return FALSE;
    p = S -> top;
    S -> top = S -> top -> top;
    free(p);
    return TRUE;
}

ElemType Top(linkStack * S)
{
    return S -> top -> data;
}
LinkStack.c

 

以上是关于链栈的实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——链式存储结构实现栈

链栈的实现

数据结构栈的链式存储结构

链栈的基本接口实现

链栈的实现问题

408数据结构与算法—链栈的表示和实现