栈顺序存储结构上的基本操作

一、 栈的顺序存储结构:

#define maxsize 50

typedef struct{

Elemtype *base;

int top;

}sqstack;

二、 顺序栈上的基本操作

1. 建空栈

void initstack(sqstack *s){

s->base=(Elemtype *)malloc(maxsize*sizeof(Elemtype)); if(!s->base) printf(“error!”);

s->top=0;}

2.判空栈

int empty(sqstack *s){

return (s->top==0);}

3.进栈

void push(sqstack *s,Elemtype x){

if(s->top==maxsize) printf(“error!”);

s->base[s->top]=x;

s->top++;}

4.出栈

Status pop(sqstack *s,Elemtype *y){

if(s->top==0) printf(“error!”); --s->top;

y=s->base[s->top];

return y;}

5.取栈顶

Status gettop(sqstack *s,Elemtype *y){ if(s->top==0) printf(“error!”); y=s->base[s->top-1];

return y;}

三、 具体应用

例:检验表达式的左右圆括号是否匹配 算法:

int pair(char *str){

initstack(s);

for(; *str; str++)

switch(*str){

case‟(„: push(s, *str); break; case‟)‟: if(empty(s)) return 0; else {pop(s); break;} }

if(empty(s)) return 1;

rerurn 0;}

一、 栈的顺序存储结构:

#define maxsize 50

typedef struct{

Elemtype *base;

int top;

}sqstack;

二、 顺序栈上的基本操作

1. 建空栈

void initstack(sqstack *s){

s->base=(Elemtype *)malloc(maxsize*sizeof(Elemtype)); if(!s->base) printf(“error!”);

s->top=0;}

2.判空栈

int empty(sqstack *s){

return (s->top==0);}

3.进栈

void push(sqstack *s,Elemtype x){

if(s->top==maxsize) printf(“error!”);

s->base[s->top]=x;

s->top++;}

4.出栈

Status pop(sqstack *s,Elemtype *y){

if(s->top==0) printf(“error!”); --s->top;

y=s->base[s->top];

return y;}

5.取栈顶

Status gettop(sqstack *s,Elemtype *y){ if(s->top==0) printf(“error!”); y=s->base[s->top-1];

return y;}

三、 具体应用

例:检验表达式的左右圆括号是否匹配 算法:

int pair(char *str){

initstack(s);

for(; *str; str++)

switch(*str){

case‟(„: push(s, *str); break; case‟)‟: if(empty(s)) return 0; else {pop(s); break;} }

if(empty(s)) return 1;

rerurn 0;}


相关文章

  • 数据结构中的名词解释
  • 本章主要介绍了如下一些基本概念:  数据结构:数据结构是研究数据元素之间抽象化的相互关系和这种关系在计算机中 的存储表示(即所谓数据的逻辑结构和物理结构),并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算后所得到的新结 ...查看


  • 考点1:数据结构与算法
  • A )所谓算法就是计算方法 B )程序可以作为算法的一种描述方法 C )算法设计只需考虑得到计算结果 D )算法设计可以忽略算法的运算时间 题目解析:算法是一组有穷指令集,是解题方案的准确而完整的描述.通俗地说,算法就是计算机解题的过程, ...查看


  • 数据结构A教学大纲
  • 数据结构A 教学大纲 (Data Structures A) 课程编号: 06311360 学 分: 5.0 学 时: 75 (其中:讲课学时:60 实验学时:0 上机学时:15) 先修课程:离散数学.程序设计基础.面向对象程序设计 适用专 ...查看


  • 数据结构第2章-答案
  • 一.填空题 01.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储结构. 02.线性表L=(a1,a2, -,an )用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均 ...查看


  • 2014黑龙江省数据结构考试题库
  • 1.广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D ). A) (G) B) (D) C) C D) D 2.若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接 ...查看


  • 数据结构导论试题1
  • 全国2004年10月高等教育自学考试 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为( ) A.逻辑结构.存储结构.机外表示 B.存储结构.逻辑结构.机外表示 C.机外表示.逻辑结构.存储结构 D.机外表示.存储结构. ...查看


  • 线性表顺序存储结构上的基本运算
  • 实验项目名称: 线性表的顺序存储结构上的基本运算 (所属课程: 数据结构--用C 语言描述 ) 院 系:计算机科学与信息工程学院 专业班级:网络工程 姓 名:000000 学 号:0000000000 实验日期:2016.10.20 实验地 ...查看


  • 指针和结构体在[数据结构]中的应用
  • 摘 要:<数据结构>是计算机专业的专业基础课程,采用理论与实践相结合的教学模式,实践教学一般采用C语言作为算法的程序设计语言,在VC++环境下运行调试,其中指针和结构体的使用成为学生编写程序的难点,本文从指针和结构体的概念出发, ...查看


  • 2014西藏自治区数据结构考试题库
  • 1.已知广义表L=((x,y,z),a,(u,t,w)),从L 表中取出原子项t 的操作是( D ). A) Head(Head(Tail(Tail(L)))) B) Tail(Head(Head(Tail(L)))) C) Head(Ta ...查看


  • 24顺序表和链表的比较302
  • 16.莫等闲,白了少年头,空悲切--岳飞 2.4顺序表和链表的比较 在本章介绍了线性表的逻辑结构及它的两种存储结构:顺序表和链表 通过对它们的讨论可知它们各有优缺点,顺序存储有三个优点: (1) 方法简单,各种高级语言中都有数组,容易实现 ...查看


热门内容