博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
栈的链式存储实现
阅读量:5895 次
发布时间:2019-06-19

本文共 1784 字,大约阅读时间需要 5 分钟。

#define ERROR           0#define OK              1#define OVERFLOW       -1typedef int Status;typedef int SElemType;typedef struct SNode{    SElemType data;    struct SNode *next;}SNode;typedef struct{    SNode *top;}LinkStack;void InitStack(LinkStack *S){    assert(S);    S->top = NULL;}void DestroyStack(LinkStack *S){    assert(S);    SNode *tmp = S->top;    while (tmp)    {        S->top = tmp->next;        free(tmp);        tmp = S->top;    }}Status StackEmpty(LinkStack *S){    assert(S);    return NULL == S->top;}Status Push(LinkStack *S, SElemType e){    assert(S);    SNode *tmp;    tmp = (SNode *)malloc(sizeof(SNode));    if (!tmp)        exit(OVERFLOW);    tmp->data = e;    tmp->next = S->top;    S->top = tmp;    return OK;}Status Pop(LinkStack *S, SElemType *e){    assert(S);    SNode *tmp;    if (StackEmpty(S))        return ERROR;    tmp = S->top;    S->top = tmp->next;    if (e)        *e = tmp->data;    free(tmp);    return OK;}Status GetTop(LinkStack *S, SElemType *e){    assert(S);    if (StackEmpty(S))        return ERROR;    *e = S->top->data;    return OK;}void StackTraverse(LinkStack *S, void(*visit)(SElemType *)){    assert(S&&visit);    SNode *tmp;    tmp = S->top;    while (tmp)    {        visit(&tmp->data);        tmp = tmp->next;    }}

    测试程序:

#include
#include
#include
void visit(SElemType *e){ putchar(*e);}int main(){ LinkStack S; int c; InitStack(&S); while ('\n' != (c = getchar())) Push(&S, c); StackTraverse(&S, visit); putchar('\n'); while (!StackEmpty(&S)) { Pop(&S, &c); visit(&c); } DestroyStack(&S); putchar('\n'); system("pause"); return 0;}

    运行结果:

    栈的顺序存储实现请戳

转载于:https://www.cnblogs.com/inori/p/5011906.html

你可能感兴趣的文章
occActiveX - ActiveX with OpenCASCADE
查看>>
BeanUtils\DBUtils
查看>>
python模块--os模块
查看>>
linux下单节点oracle数据库间ogg搭建
查看>>
Java 数组在内存中的结构
查看>>
《关爱码农成长计划》第一期报告
查看>>
学习进度表 04
查看>>
谈谈javascript中的prototype与继承
查看>>
时序约束优先级_Vivado工程经验与各种时序约束技巧分享
查看>>
minio 并发数_MinIO 参数解析与限制
查看>>
flash back mysql_mysqlbinlog flashback 使用最佳实践
查看>>
mysql存储引擎模式_MySQL存储引擎
查看>>
python类 del_全面了解Python类的内置方法
查看>>
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
mysql client命令行选项
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
JavaScript---事件
查看>>