/*
用数组(顺序表)实现栈的常用操作
*/
#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];
}
分享到:
相关推荐
在本例中,使用了结构体node来定义顺序表,包括最大元素个数max、元素个数n和元素数组a。创建顺序表的函数create()用于分配内存空间,读取用户输入的元素个数和最大元素个数,并将元素数组a初始化。 二、顺序表的...
它们都是用于存储和管理数据的,但是它们在实现和使用上有很大的区别。 数组是具有相同的数据类型且按一定次序排列的集合体。它的元素在内存中的地址是连续相邻的,可以通过下标迅速访问数组中任何元素。但是,如果...
在本主题中,我们将深入探讨几种重要的数据结构及其在C/C++中的实现:顺序表、链表、队列、栈和树。这些数据结构不仅在算法设计中扮演着关键角色,而且在实际应用如操作系统、数据库、网络编程等领域也有广泛的应用...
本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...
可以使用数组或链表实现,主要有入队(enqueue)和出队(dequeue)操作。循环队列可以优化数组空间利用率。 5. **二叉树(Bitree.c)**: 二叉树是一种特殊的树结构,每个节点最多有两个子节点。创建二叉树通常...
顺序栈是一种常用的数据结构,它在计算机科学和编程中扮演着重要的角色,特别是在处理一系列操作序列时。在数据结构课程中,理解并掌握顺序栈的实现是基础且关键的。顺序栈是线性数据结构的一种,其存储方式类似于...
顺序栈是利用顺序表实现的栈,其中数组的一端代表栈底,另一端代表栈顶。 1. **顺序栈元素“入栈”** - 当栈为空时,数组中没有任何元素,此时栈顶指针 `top` 的值为 `-1`。 - 向栈中添加第一个元素时,将其存储...
这个压缩包文件"单链表,队列,链队,链栈,排序,顺序表,顺序栈算法实现.zip"包含了几个核心的数据结构及其相关操作的C++实现。下面将对这些数据结构进行详细的解释和探讨。 首先,单链表是一种基本的数据结构,...
在C++或Python等编程语言中,可以使用数组或链表来实现队列。 二叉树是每个节点最多有两个子节点的树形结构,通常分为二叉搜索树、完全二叉树、平衡二叉树(如AVL树和红黑树)等类型。二叉树的常用操作有插入、删除...
本资料包"顺序栈 链栈 顺序队列 链式队列 循环队列的常用算法.zip"涵盖了这四种数据结构的基本操作,包括入队、出队、入栈、出栈等核心算法。 1. **顺序栈**: - 顺序栈是一种基于数组实现的栈,其元素存储在连续...
顺序表是一种最简单的线性表实现,它在内存中是连续存储的,可以通过数组来表示。对于顺序表,增删查改操作通常涉及到数组的动态扩展和收缩。添加元素时,如果数组已满,则需要创建一个更大的新数组并复制原有元素;...
本主题聚焦于顺序链表(单链表)的C语言实现,包括正序创建、逆序创建、输出、删除、插入节点、求链表长度以及合并链表等操作。 1. **链表的基本概念**:链表由一系列节点组成,每个节点包含数据和指向下一个节点的...
在顺序存储结构中,栈和队列可以使用数组来实现。栈的顺序存储有“后进先出”的特点,即最后一个入栈的元素将是第一个出栈的元素。队列的顺序存储也有“先进先出”的特点,即第一个入队的元素将是第一个出队的元素。...
因此,链表特别适用于那些频繁增删元素的应用场景,如实现LRU(最近最少使用)缓存淘汰策略时,链表可以快速地移除最不常用的元素。 但链表也有其缺陷,主要是其访问元素的效率低下。由于链表不支持随机访问,要...
线性表是一种在实际中广泛使用的数据结构,常见的线性表有顺序表、链表、栈、队列、字符串等。线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常...
问题:用数组实现一个顺序栈 问题:用链表实现一个链式栈 队列 问题:用数组实现一个顺序队列 问题:用链表实现一个链式队列 问题:实现一个循环队列 递归 问题:编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2) ...
- 顺序表是最典型的顺序存储结构,其中所有数据元素在内存中是连续存储的。 - 通过数组实现,可以方便地访问任意位置的元素。 - 插入和删除操作可能导致大量元素移动,效率较低。 3. **链式存储结构**: - 链表...
- **数组实现**:使用动态数组实现栈,数组的一端作为栈顶。 **时间复杂度**:无论是链表还是数组实现,栈的Push、Pop、Peek和IsEmpty操作的时间复杂度均为O(1)。 ##### 3. 栈的应用 - **平衡符号检查**:用于...