广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言详解如何实现顺序栈
  • 730
分享到

C语言详解如何实现顺序栈

2024-04-02 19:04:59 730人浏览 独家记忆
摘要

目录顺序栈的定义顺序栈的理解准备工作具体实现今天说的是关于数据结构顺序栈的一些基本操作C语言实现。 顺序栈的定义 首先,我们先来简单了解一下顺序栈,前面线性表我们知道,根据顺序存储或

今天说的是关于数据结构顺序栈的一些基本操作C语言实现。

顺序栈的定义

首先,我们先来简单了解一下顺序栈,前面线性表我们知道,根据顺序存储或者链式存储分为顺序表和单链表,同样的,根据存储方式的不同,我们把栈分为顺序存储的栈称为顺序栈,链式存储的栈称为链栈。我们要讲的就是顺序栈。实际上,有了前面线性表的一些知识后,关于栈的操作我们还是比较容易理解的。

顺序栈的理解

问题来了?我们怎么去定义呢?通常我们可以用一个数组和记录栈顶元素位置的变量组成,栈顶位置用整型变量Top记录当前栈顶元素的下标值。当Top==-1时,表示空栈。当top==MAXSIZE-1时,表示满栈。好了,下面开始实现顺序栈。

准备工作

1.宏定义及其重命名

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 20 
typedef int Status; 
typedef int SElemType; 

2.结构体(顺序栈的表示方式)


typedef struct
{
        SElemType data[MAXSIZE];
        int top; 
}SqStack;

具体实现

1.初始化


Status InitStack(SqStack *S)
{ 
        
        S->top=-1;
        return OK;
}

2.清空


Status ClearStack(SqStack *S)
{ 
        S->top=-1;
        return OK;
}

3.判断是否为空


Status StackEmpty(SqStack S)
{ 
        if (S.top==-1)
                return TRUE;
        else
                return FALSE;
}

4.求长度


int StackLength(SqStack S)
{ 
        return S.top+1;
}

5.求栈顶元素


Status GetTop(SqStack S, SElemType* e)
{
    if (S.top == -1) {
        return ERROR;
    }
    else {
        *e = S.data[S.top];
        return OK;
    }
}

6.入栈(判断是否满了)


Status Push(SqStack* S, SElemType e)
{
    if (S->top == MAXSIZE - 1) 
    {
        return ERROR;
    }
    S->top++;				
    S->data[S->top] = e;  
    return OK;
}

7.出栈(判断是否为空)


Status Pop(SqStack* S, SElemType* e)
{
    if (S->top == -1)
        return ERROR;
    *e = S->data[S->top];	
    S->top--;				
    return OK;
}

8.遍历


Status StackTraverse(SqStack S)
{
    int i;
    i = 0;
    while (i <= S.top)
    {
        visit(S.data[i++]);
    }
    printf("\n");
    return OK;
}
Status visit(SElemType c)
{
    printf("%d ", c);
    return OK;
}

主函数

int main()
{
    int j;
    SqStack s;
    int e;
    if (InitStack(&s) == OK)
        for (j = 1; j <= 10; j++)
            Push(&s, j);
    printf("栈中元素依次为:");
    StackTraverse(s);
    Pop(&s, &e);
    printf("弹出的栈顶元素 e=%d\n", e);
    printf("栈空否:%d(1:空 0:否)\n", StackEmpty(s));
    GetTop(s, &e);
    printf("栈顶元素 e=%d 栈的长度为%d\n", e, StackLength(s));
    ClearStack(&s);
    printf("清空栈后,栈空否:%d(1:空 0:否)\n", StackEmpty(s));
    return 0;
}

好啦,本次顺序栈的一些知识就结束了。

到此这篇关于C语言详解如何实现顺序栈的文章就介绍到这了,更多相关C语言顺序栈内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C语言详解如何实现顺序栈

本文链接: https://www.lsjlt.com/news/146922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言详解如何实现顺序栈
    目录顺序栈的定义顺序栈的理解准备工作具体实现今天说的是关于数据结构顺序栈的一些基本操作c语言实现。 顺序栈的定义 首先,我们先来简单了解一下顺序栈,前面线性表我们知道,根据顺序存储或...
    99+
    2022-11-13
  • C语言怎么实现顺序栈
    本篇内容主要讲解“C语言怎么实现顺序栈”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现顺序栈”吧!顺序栈的定义首先,我们先来简单了解一下顺序栈,前面线性表我们知道,根据顺序存储或者链...
    99+
    2023-06-30
  • C语言实现动态顺序表详解
    目录什么是顺序表?1. 定义顺序表结构体:2. 初始化顺序表:3. 销毁顺序表:4. 打印顺序表:5. 判断容量+扩容:6. 头插数据:7. 尾插数据:8. 指定下标位置插入...
    99+
    2022-11-12
  • C语言中顺序栈和链栈的定义和使用详解
    目录栈的基本内容顺序栈定义入栈操作出栈顺序栈的缺点出栈顺序的计算方法链栈栈的基本内容 无论是我们接下来要讲的栈还是后面要讲到的队列,他们虽然在名字上不同于我们之前的顺序表或者单链表,...
    99+
    2022-11-13
    C语言 顺序栈 链栈 C语言 顺序栈 C语言 链栈
  • C语言如何用顺序栈实现回文序列判断
    我是采用了两个栈值得比较大小判断得(可能比较浪费空间但是代码我感觉简单一点) 首先是定义一个栈的结构元素,由于是字符串类型就直接定义一个char的数组就可以:. typedef ...
    99+
    2022-11-12
  • 详解C语言之顺序表
    目录一、思维导图二、步骤1.初始化2.求表长3.插入数据元素4.删除数据元素5.取出数据元素按位查找按位查找所有代码总结 一、思维导图 二、步骤 1.初始化 代码如下: voi...
    99+
    2022-11-12
  • C语言顺序表如何实现
    这篇文章主要讲解了“C语言顺序表如何实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言顺序表如何实现”吧!概念及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般...
    99+
    2023-06-29
  • C语言实现顺序表的全操作详解
    目录线性表顺序表顺序表接口实现1.顺序表初始化2.顺序表空间增容3.顺序表打印4.尾插数据5.尾删数据6.头插数据7.头删数据8.在pos下标处插入数据9.删除pos下标处数据10....
    99+
    2022-11-13
  • C语言实现栈的示例详解
    目录前言一. 什么是栈二. 使用什么来实现栈三. 栈的实现3.1 头文件3.2 函数实现3.3 完整代码四. 栈的用处前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链...
    99+
    2022-11-13
  • C语言实现出栈序列
    本文实例为大家分享了C语言实现出栈序列的具体代码,供大家参考,具体内容如下 题目描述: 现在有一个1-n的排列,入栈序列已知,请给出字典序最大的出栈序列。 输入格式 第一行一个整数n...
    99+
    2022-11-12
  • C语言线性顺序表如何实现
    这篇“C语言线性顺序表如何实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言线性顺序表如何实现”文章吧。线性表是最常用...
    99+
    2023-07-02
  • C语言 栈与数组的实现详解
    目录栈的实现栈的定义数组实现静态栈动态栈链栈栈的实现 首先我们思考一个问题,什么是栈? 栈是数据结构的一种,栈在我们日常编码中遇到的非常多,很多人对栈的接触可能仅仅局限在 递归使用的...
    99+
    2022-11-13
  • C语言如何实现顺序循环队列
    这篇文章将为大家详细讲解有关C语言如何实现顺序循环队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、队列和循环队列基本概念队列:和栈相反,队列是一种先进先出(FIFO)的线性表。只允许在一端插入,在另...
    99+
    2023-06-29
  • C语言栈与队列相互实现详解
    目录一、本章重点二、队列实现栈三、栈实现队列四、解题思路总结一、本章重点 用两个队列实现栈用两个栈实现队列解题思路总结 二、队列实现栈  我们有两个队列:  ...
    99+
    2022-11-13
  • C语言的顺序表怎么实现
    本文小编为大家详细介绍“C语言的顺序表怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言的顺序表怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.线性表线性表(linear list)是n个具...
    99+
    2023-06-30
  • C语言顺序表的基本结构与实现思路详解
    目录一、顺序表的概念与结构1、线性表的解释2、顺序表概念解释二、顺序表的思路及代码实现详解1.静态顺序表的实现2.动态顺序表思路及代码实现2.1 动态顺序表的整体思路2.2 定义结构...
    99+
    2023-02-13
    C语言顺序表 C语言顺序表的创建
  • C语言实现顺序表的基本操作的示例详解
    目录一、认识顺序表1.线性表2.顺序表的概念及结构二、顺序表的基本操作(接口实现)1.初始化顺序表2.打印顺序表3.尾插4.尾删5.扩容6.头插7.头删8.任意位置插入9.任意位置删...
    99+
    2022-11-13
    C语言顺序表基本操作 C语言顺序表操作 C语言顺序表
  • C语言中栈的两种实现方法详解
    目录一、顺序栈二、链式栈总结一、顺序栈 #include<stdio.h> #include<stdlib.h> #define maxsize 64 ...
    99+
    2022-11-12
  • C++如何实现顺序栈(使用模板类)
    目录一、思路二、遇到问题三、实现程序一、思路 1.用数组存储栈中的元素;2.用top保存栈顶的位置;3.进栈:top加1,然后在数组中的top位置插入x;4.出栈:top减1 二、遇...
    99+
    2022-11-13
  • C语言顺序表如何使用
    本篇内容介绍了“C语言顺序表如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!编程环境为 ubuntu 18.04。顺序表需要连续一片存...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作