数据结构与经典算法(二)
来源:互联网 发布:c语言怎么编程游戏 编辑:程序博客网 时间:2024/05/18 02:38
第三章、栈
栈是一种特殊的线性表,一般来说在线性表的插入删除不受控制,而栈上的插入删除操作会受限制,栈的插入和删除操作是在童一端进行的。
一、栈
1.基本概念
栈是仅限定在表的一端进行插入或删除操作的线性表。
允许插入和删除操作的顶端称为栈顶,处于栈顶位置的元素称为栈顶元素。相应的称为栈底。栈中含有的元素个数称为栈长;不含元素的空表称为空栈。
由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out, 简称LIFO)。
2.栈的顺序存储结构
栈既然是一种线性表,所以线性表的顺序存储和链接存储结构同样适用于栈。
栈的顺序存储结构同样需要使用一个数组和一个整型变量来实现,利用数组来顺序存储栈中的所有元素,为了方便将数组的最后一个元素作为栈顶;利用整型变量top来存储栈顶元素的下标,其作用相当于栈顶指针,若top初始值为-1则表示空栈。
栈的基本操作
(1)初始化操作:生成长为len的非空栈,len不能超过数组的最大长度
#include "stdio.h"#define maximum 100 /*最大空间*/int top=-1;Datatype stack[maximum];
void CreatStack(int *stack,int len) //创建顺序栈{ if(len>maximum) { printf(""长度超过最大限制); return; } int value; for(int count=0;count<len;count++) { scanf("%d",&value); stack[count]=value; top++; }}
(2)入栈操作:
首先将top指针后移一位即值+1,然后在此处插入新元素x;当top==maximum-1的时候,表示栈满,不能插入
void Push(int *h,int value){ if(top==maximum-1) { printf("栈满"); return; } top++; h[top]=value; return;}
(3)出栈操作:
首先将top指针处元素x出栈;top值-1;
void Pop(int *h,int *e) //e存放出站元素的值{ if(top==-1) { printf("栈空"); return; } *e=h[top]; top--; return;}
(4)计算栈长:
栈长=top+1(由于top表示数组下表,从0开始)
int StackLength() //e存放出站元素的值{ return(top+1);}
回头再看
0 0
- 数据结构与经典算法(二)
- 数据结构与算法(二)
- 数据结构与经典算法(一)
- 经典数据结构与算法(二):平衡查找树之2-3树
- 数据结构与算法二
- 数据结构与算法二
- 数据结构与算法经典80
- 数据结构经典算法(6)老鼠走迷官(二)
- 经典算法面试与解答(二)
- 算法与数据结构上机经典算法(1)
- 数据结构与算法总论(二)
- 数据结构与算法(二)线性表
- 数据结构与算法--二叉树(二)
- 数据结构与算法:数组(二)
- JS数据结构与算法(二)
- 数据结构与算法:数组(二)
- 数据结构与算法笔记:二
- 算法与数据结构学习二
- Oracle生成AWR报告
- 占位
- tjut 4405
- ios开发中怎么判断各类设备
- 占位
- 数据结构与经典算法(二)
- TCC柔性事物简介
- Android Material Design控件学习(一)——TabLayout的用法
- linux安装无线网卡驱动
- static静态方法和静态变量用法
- RecyclerView的基本使用步骤
- text-shadow可以用来设置文本的阴影效果
- 智障错误大全
- 概率论之概率dp与期望的极限求解