(39)4.29数据结构(栈,队列和数组)栈

embedded/2024/9/24 10:38:15/

#include<stdlib.h>
#include<stdio.h>
#define MaxSize 10
#define Elemtype int

1.栈的基本概念

2.栈的基本操作

typedef struct
{
    Elemtype data[MaxSize];
    int top;

}Sqstack;
//初始化栈
void InitStack(Sqstack& S)
{
    S.top = -1;   //初始化栈顶指针
}
bool StackEmpty(Sqstack S)
{
    if (S.top == -1)
        return true;
    else
        return false;
}
void testStack()
{
    Sqstack S;   //声明一个顺序栈(分配空间)
    InitStack(S);
    //。。。。后续操作
}
//新元素进栈
bool Push(Sqstack& S, Elemtype x)
{
    if (S.top == MaxSize - 1)
        return false;
    //S.top = S.top + 1;
    //S.data[S.top] = x;
    //也可以写成

    S.data[++S.top] = x;
}
//出栈操作
bool Push(Sqstack& S, Elemtype &x)
{
    if (S.top == - 1)
        return false;
    //x = S.data[S.top] ;
    //S.top = S.top - 1;
    //也可以写成

    x = S.data[S.top--];  //先出栈,指针再减一
}
//读栈操作
bool GetTop(Sqstack S, Elemtype& x)
{
    if (S.top == -1)
        return false;
    x = S.data[S.top]; //x记录栈顶元素
    return true;
}
//****做题的时候一定要注意top指针指向的位置,看看是指向栈顶元素还是指向栈顶元素后面一个位置****/


//共享栈
typedef struct
{
    Elemtype data[MaxSize]; //静态数组存放栈中元素
    int top0;               //0号栈栈顶指针
    int top1;               //1号栈栈顶指针
}Shstack;
//初始化栈
void InitStack(Shstack& S)
{
    S.top0= -1;   //初始化栈顶指针
    S.top1 = MaxSize;
}

3.链栈的定义

//链栈
typedef struct Linknode
{
    Elemtype data; //数据域
    struct Linknode* next;
}*Listack;
//进栈和出栈都只能在栈顶一端进行(链头作为栈顶)


http://www.ppmy.cn/embedded/33897.html

相关文章

SAP Fiori开发中的JavaScript基础知识19 - 综合练习

1. 背景 本篇博客将通过一个例子&#xff0c;来融汇贯通JavaScript中的基础知识点。 2. 题目说明 创建一个小型车队管理器应用程序。它维护两种类型的车辆:汽车和摩托车。 Vehicle定义了两个通用属性:车辆名称和制造年份。它包含一个print函数&#xff0c;用于打印车辆数据。…

Java学习之集合1

集合&#xff1a; 为什么需要集合&#xff0c;存储数据用数组不就行了吗&#xff1f; 对于对象数据据进行排序 &#xff1f; 以及对重复数据进行去重 &#xff1f; 以及存储对应的 Key Value 数据&#xff1f; 集合作为应该容器&#xff0c;内部提供了一些类&#xff0c;可以…

leetcode 92. 反转链表 II

class Solution(object):def reverseBetween(self, head, left, right):""":type head: ListNode:type left: int:type right: int:rtype: ListNode""" right right -1left left -1while( right-left>0 ):print(right-left)# 左侧节点l …

php字符串变量和常见的字符串函数

在 PHP 中&#xff0c;字符串变量用于存储文本数据。你可以使用单引号&#xff08;&#xff09;、双引号&#xff08;"&#xff09;或定界符&#xff08;heredoc 或 nowdoc&#xff09;来定义字符串。下面是一些关于 PHP 字符串变量的重要点和示例&#xff1a; 1. 单引号…

C#逻辑运算符

C#中逻辑运算符分为: 或、与、非 或||: 对两个bool值进行逻辑运算 有真则真 同假则假 与&&: 对两个布尔值进行运算 有假则假 同真为真 非&#xff01;: 对两个bool值进行取反 真变假 假变真 或 || 符号 &#xff1a; || <u>*对两个bool值进行逻辑运算 有真则…

Android BINDER是干嘛的?

1.系统架构 2.binder 源码位置&#xff1a; 与LINUX传统IPC对比

解决windows中的WSL Ubuntu子系统忘记root密码和用户密码问题

1、以管理员身份运行PowerShell 2、在powershell中执行wsl.exe --user root wsl.exe --user root如果出现了上面的报错&#xff0c;则需要运行步骤3、4&#xff0c;然后在执行步骤5改密码&#xff0c;如果没有出错&#xff0c;请直接跳到第5步改密码操作&#xff01;&#xff…

使用docker-compose编排Lnmp(dockerfile) 完成Wordpress

目录 一、 Docker-Compose 1.1Docker-Compose介绍 1.2环境准备 1.2.1准备容器目录及相关文件 1.2.2关闭防火墙关闭防护 1.2.3下载centos:7镜像 1.3Docker-Compose 编排nginx 1.3.1切换工作目录 1.3.2编写 Dockerfile 文件 1.3.3修改nginx.conf配置文件 1.4Docker-Co…