数据结构与算法
2021/10/16 22:10:12
本文主要是介绍数据结构与算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
栈
什么是栈?
栈:限定仅在一端进行插入或删除操作的线性表
栈的特点
根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最后放入的元素最后删除。
特点:后进先出(先进后出)
也就是说,栈是一种后进先出的线性表,简称LIFO(Last In First Out)表。
什么是链栈?
栈的链式存储结构简称链栈。
注意链表中指针的方向是从栈顶到栈底
因为栈的所有操作在栈顶进行,所以可以不需要头节点,栈顶指针就相当于链表的头指针。
链栈的结构类型
typedef ?? SElemType //由实际需要决定 typedef struct SNode { SElmType data;//数据域 struct SNode *next;//指针域 }SNode,*LStack; LSatck S;//定义指向结点的指针s /*------链栈的基本操作------*/ Status InitStack(LStack &S); Status GetTop(LStack &S,SElemType e); Status Push(LStack &S,SElemType e); Status Pop(LStack &S,SElemType e);
初始化栈 Status InitStack(LStack &S) { S = NULL; return OK; } 获取栈顶元素 Status GetTop(LStack S,SElemType &e) { if(!S ) return ERROR; e = S->data; return OK; } 入栈 Status Push(LStack &S,SElemType e) { LStack p; p = (LStack )malloc(sizeof(SNode)); if(p == NULL) { perror("malloc error"); exit(-1); } p->next = S; S = p; return OK; } 出栈 Status Pop(LStack &S,SElemType &e) { LStack p = S; if(!S) { printf("空栈/n"); return ERROR; } e = S->data; S = p->next; free(p); p = NULL; return OK; }
这篇关于数据结构与算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程