/*
用数组(顺序表)实现栈的常用操作
*/
#include<stdio.h>
#include <stdlib.h>
//定义结构体
typedef struct Node
{
int data[20];
int top;
} SeqStack;
//函数操作声明
void SeqStackInit(SeqStack);//栈的初始化
bool SeqStackInitEmpty(SeqStack);//判断栈是否为空
void SeqStackPush(SeqStack,int);//入栈操作
int SeqStackPop(SeqStack);//出栈操作
int SeqStackGetPop(SeqStack);//取栈顶元素
int main(void)
{
SeqStack s;//声明出结构体变量
SeqStackInit( s);
return 0;
}
//初始化实现
void SeqStackInit(SeqStack s)
{
s.top=-1;//如果空栈 声明-1然后++
}
//判断栈是否为空
bool SeqStackInitEmpty(SeqStack s)
{
if(s.top==-1)
return true;
else
return false;
}
//入栈操作
void SeqStackPush(SeqStack s ,int val)
{
if(20-1==s.top)
{
printf("栈已满");
exit(-1);
}
else
{
s.data[++s.top]=val;
}
}
//出栈操作
int SeqStackPop(SeqStack s)
{
if(SeqStackInitEmpty(s))
{
printf("栈为空");
exit(-1);
}
int val=s.data[s.top];
s.top--;
return val;
}
//取栈顶元素
int SeqStackGetPop(SeqStack s)
{
if(SeqStackInitEmpty(s))
{
printf("空栈");
exit(-1);
}
return s.data[s.top];
}
分享到:
相关推荐
用数组实现对栈的操作,如入栈,退栈,清空,输出等
用数组实现对栈的基本操作:出栈、入栈
主要介绍了JAVA基于静态数组实现栈的基本原理与用法,结合实例形式详细分析了JAVA基于静态数组实现栈相关原理、用法与操作注意事项,需要的朋友可以参考下
有些语言不提供指针与对象数据类型,以下代码通过多重数组实现链表结构及其基本操作。 用一个数组空间模拟分配堆。用一个头指针为free的链表来管理自由空间。用栈得push和pop操作来实现释放和分配空间。 三个数组...
入栈和出栈的基本操作 入栈(Push)和出栈(Pop)是栈(Stack)数据结构的两个基本操作。栈是一种后进先出(Last In, First Out,LIFO)的数据结构,类比于把一堆...下面是C语言中使用数组实现栈的简单示例: ```c #
使用C++描述,数组实现的栈。实现了栈的基本操作。包括拷贝构造函数和操作符重载。
顺序栈(Sequential Stack)是一种使用数组实现的栈结构。它具有先进后出(Last In, First Out,LIFO)的特点,即最后入栈的元素首先出栈。 顺序栈中的元素按照入栈的顺序存储在数组中,并且通过一个指针来记录栈顶...
顺序栈使用数组来存储栈中的元素,并提供了压栈、出栈、判空、栈长度等基本操作。 顺序栈的核心功能包括压栈、出栈、判空和栈长度。压栈操作将新元素添加到栈的顶部,而出栈操作则是从栈的顶部删除元素。判空操作...
用函数或过程的方法设计、实现一个抽象数据类型栈或队列,包括栈或队列的基本运算操作,使得以后对栈或队列中的数据的访问,可以通过调用函数或过程来完成。
利用栈实现括号匹配的检验,存储括号字符的数组通过malloc实现动态分配长度,匹配函数的第一个参数为指向字符的指针(即为存储括号字符的数组的首地址)和一个整数(即为括号字符的总数,为括号个数的2倍),将左...
在数组实现的栈中,入栈操作通常意味着将新元素放置在数组的末尾,并将栈顶指针加1。在链表实现的栈中,入栈操作则意味着在链表头部插入新节点。 入栈操作的时间复杂度通常为O(1),因为无论栈中有多少元素,入栈...
此类型在很多方面做了优化,因此可以把它当成真正的数组(真正的数组在前面的课程javascript已经学过了,这里只介绍与以前数组之间的区别)来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列...
c++ 利用数组做底层存储,实现入栈 出栈 栈空/满判断等基本操作,计算器实现加减乘除简单功能 ,支持中缀表达式
一、 实验目的 1、 会定义顺序栈和链栈的结点类型。 2、 掌握双向栈的结构特点及其在一维数组中的实现。 3、 掌握在双向栈中进行插入和删除元素的方法。...4、 程序运行界面良好,使用菜单实现每个基本操作。
第2章至第7章从抽象数据类型的角度,分别讨论线性表、栈、队列、串、数组、广义表、树和二叉树以及图等基本类型的数据结构及其应用;第8章综合介绍操作系统和编译程序中涉及的动态存储管理的基本技术;第9章至第11章...
实验要求用栈的基本基本操作实现判断是否为回文,则必须定义栈的初始化和出栈、入栈;另外为了判断是否是回文,则定义一个数组,便于比较。在字符串输入的时候,保证同时进入数组和栈里。因为栈的后进先出的输出特性...
本文实例讲述了Python实现栈和队列的简单操作方法。分享给大家供大家参考,具体如下: 先简单的了解一下数据结构里面的栈和堆: 栈和队列是两种基本的数据结构,同为容器类型。两者根本的区别在于: stack:后进先出 ...
•只要类型相互兼容,可以让一个数组变量指向另一个实际的数组,这种操作会产生数组的长度可变的错觉。 •但由于数组变量整体赋值导致的数组的长度可以改变,只是一个假相。 基本类型数组的初始化 •对于...
(1) 用顺序栈作为表达式求值过程中运算符栈和操作数栈的实现; (2) 用二维数组存储算符间的优先关系; (3) 采用算符优先法实现表达式求值; (4) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。 ...
* 栈是先进后出* 只能访问栈顶的数据* 基于数组来实现栈的基本操作* 数据项入栈和出栈的时间复杂度均为O(1)public class ArrayStack