`

用数组(顺序表)实现栈的常用操作

 
阅读更多
/*
  用数组(顺序表)实现栈的常用操作
*/
#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初始化。 二、顺序表的...

    python算法-数组和链表 数组和链表.pdf

    它们都是用于存储和管理数据的,但是它们在实现和使用上有很大的区别。 数组是具有相同的数据类型且按一定次序排列的集合体。它的元素在内存中的地址是连续相邻的,可以通过下标迅速访问数组中任何元素。但是,如果...

    c c++ 顺序表 链表 队 栈 树类模板实现 以及例子

    在本主题中,我们将深入探讨几种重要的数据结构及其在C/C++中的实现:顺序表、链表、队列、栈和树。这些数据结构不仅在算法设计中扮演着关键角色,而且在实际应用如操作系统、数据库、网络编程等领域也有广泛的应用...

    栈:顺序栈和链表栈_C语言项目

    本文将深入探讨一种常用的数据结构——栈,特别是顺序栈和链表栈,它们都是实现栈功能的不同方式。栈通常被称为“后进先出”(LIFO,Last In First Out)的数据结构,广泛应用于各种算法和程序设计中,如表达式求值...

    c编写的数据结构创建顺序表、链表、栈、队列、树的代码

    可以使用数组或链表实现,主要有入队(enqueue)和出队(dequeue)操作。循环队列可以优化数组空间利用率。 5. **二叉树(Bitree.c)**: 二叉树是一种特殊的树结构,每个节点最多有两个子节点。创建二叉树通常...

    顺序栈的实现

    顺序栈是一种常用的数据结构,它在计算机科学和编程中扮演着重要的角色,特别是在处理一系列操作序列时。在数据结构课程中,理解并掌握顺序栈的实现是基础且关键的。顺序栈是线性数据结构的一种,其存储方式类似于...

    栈和队列笔记包括栈和队列的定义、顺序栈出入栈、链栈的出入栈操作、顺序队列基本操作、链式队列基本操作等

    顺序栈是利用顺序表实现的栈,其中数组的一端代表栈底,另一端代表栈顶。 1. **顺序栈元素“入栈”** - 当栈为空时,数组中没有任何元素,此时栈顶指针 `top` 的值为 `-1`。 - 向栈中添加第一个元素时,将其存储...

    单链表,队列,链队,链栈,排序,顺序表,顺序栈算法实现.zip

    这个压缩包文件"单链表,队列,链队,链栈,排序,顺序表,顺序栈算法实现.zip"包含了几个核心的数据结构及其相关操作的C++实现。下面将对这些数据结构进行详细的解释和探讨。 首先,单链表是一种基本的数据结构,...

    数据结构的程序大全(队列、二叉树、数组、图、稀疏矩阵、线性表和链表、栈)

    在C++或Python等编程语言中,可以使用数组或链表来实现队列。 二叉树是每个节点最多有两个子节点的树形结构,通常分为二叉搜索树、完全二叉树、平衡二叉树(如AVL树和红黑树)等类型。二叉树的常用操作有插入、删除...

    顺序栈 链栈 顺序队列 链式队列 循环队列的常用算法.zip

    本资料包"顺序栈 链栈 顺序队列 链式队列 循环队列的常用算法.zip"涵盖了这四种数据结构的基本操作,包括入队、出队、入栈、出栈等核心算法。 1. **顺序栈**: - 顺序栈是一种基于数组实现的栈,其元素存储在连续...

    顺序表 链表 双链表的增删查改操作及链表逆置等常用线性表算法.zip

    顺序表是一种最简单的线性表实现,它在内存中是连续存储的,可以通过数组来表示。对于顺序表,增删查改操作通常涉及到数组的动态扩展和收缩。添加元素时,如果数组已满,则需要创建一个更大的新数组并复制原有元素;...

    顺序链表C语言实现代码

    本主题聚焦于顺序链表(单链表)的C语言实现,包括正序创建、逆序创建、输出、删除、插入节点、求链表长度以及合并链表等操作。 1. **链表的基本概念**:链表由一系列节点组成,每个节点包含数据和指向下一个节点的...

    栈和队列的基本操作

    在顺序存储结构中,栈和队列可以使用数组来实现。栈的顺序存储有“后进先出”的特点,即最后一个入栈的元素将是第一个出栈的元素。队列的顺序存储也有“先进先出”的特点,即第一个入队的元素将是第一个出队的元素。...

    链表和数组的区别与作用应该知道吧 数组和链表.pdf

    因此,链表特别适用于那些频繁增删元素的应用场景,如实现LRU(最近最少使用)缓存淘汰策略时,链表可以快速地移除最不常用的元素。 但链表也有其缺陷,主要是其访问元素的效率低下。由于链表不支持随机访问,要...

    Lesson3--顺序表_链表.pdf

    线性表是一种在实际中广泛使用的数据结构,常见的线性表有顺序表、链表、栈、队列、字符串等。线性表在逻辑上是线性结构,也就是说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常...

    50个必会的数据结构及算法实现源码

    问题:用数组实现一个顺序栈 问题:用链表实现一个链式栈 队列 问题:用数组实现一个顺序队列 问题:用链表实现一个链式队列 问题:实现一个循环队列 递归 问题:编程实现斐波那契数列求值f(n)=f(n-1)+f(n-2) ...

    线性结构和非线性结构、稀疏数组、队列、链表(LinkedList) 数组和链表.pdf

    - 顺序表是最典型的顺序存储结构,其中所有数据元素在内存中是连续存储的。 - 通过数组实现,可以方便地访问任意位置的元素。 - 插入和删除操作可能导致大量元素移动,效率较低。 3. **链式存储结构**: - 链表...

    数据结构--表、栈、队列(java)

    - **数组实现**:使用动态数组实现栈,数组的一端作为栈顶。 **时间复杂度**:无论是链表还是数组实现,栈的Push、Pop、Peek和IsEmpty操作的时间复杂度均为O(1)。 ##### 3. 栈的应用 - **平衡符号检查**:用于...

Global site tag (gtag.js) - Google Analytics