栈的基本操作(数据结构)

顺序栈的基本操作

#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#define MaxSize 10typedef struct{int 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; 
} //进栈
bool Push(SqStack &S,int x){if(S.top==MaxSize-1) return false;//满栈//S.data[++S.top] = x;与下面等价 S.top = S.top+1;//指针加1S.data[S.top]=x;//新元素入栈 return true; 
} //出栈
int Pop(SqStack &S){if(S.top==-1) return false;//空栈//x=S.data[S.top--];与下面等价int x;x = S.data[S.top];S.top = S.top-1; return x;
} //读取栈顶元素
int GetTop(SqStack &S){if(S.top==-1) return false;int x;x=S.data[S.top];return x;
} //输出栈 
bool PrintStack(SqStack &D){if(D.top==-1){printf("空栈");return false;}for(int i=D.top;i>=0;i--)printf("%d ",D.data[i]);printf("\n");return true;
}int main(){SqStack S;InitStack(S);printf("-----进栈-----\n");Push(S,1);Push(S,2);Push(S,3);Push(S,4);printf("栈内元素:");PrintStack(S);printf("栈顶元素:");int x;x = GetTop(S);printf("%d\n",x);printf("-----出栈-----\n");int y;y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);y=Pop(S);printf("%d已经出栈\n",y);printf("栈内元素:");PrintStack(S);printf("栈顶元素:");int z;z = GetTop(S);printf("%d\n",z);return 0;
}

链栈的基本操作

#include <stdlib.h>
#include <iostream>
#include <stdio.h>
typedef struct LNode{int data;struct LNode *next;
}LNode,*LinkStack;LinkStack InitStack(LinkStack &D){D = (LNode *)malloc(sizeof(LNode));D->next=NULL;return D;
}//打印栈 
void PrintStack(LNode *p)
{LNode *temp;temp = p->next;printf("打印栈:");while(temp!=NULL){printf("%d ",temp->data);temp = temp->next;}printf("\n");
}//进栈 
LinkStack Push(LinkStack &D,int x){LNode *Q;Q = (LNode *)malloc(sizeof(LNode));Q->next = D->next;D->next = Q;Q->data = x;return D;
} //出栈 
int Pop(LinkStack &D){if(D->next==NULL) return false;LNode *Q;Q = (LNode *)malloc(sizeof(LNode));int x;Q = D->next;D->next = Q->next;x = Q->data;free(Q);return x;
} //获取栈顶元素
int GetTop(LinkStack &D){if(D->next==NULL) return false;int x;x = D->next->data;return x;
} int main(){LNode *D;InitStack(D);printf("-----开始进栈-----\n");Push(D,1);Push(D,2);Push(D,3);Push(D,4);Push(D,5);PrintStack(D);printf("-----栈顶元素-----\n");int z;z=GetTop(D);printf("栈顶元素为%d\n",z);printf("-----开始出栈-----\n");int x;x = Pop(D);printf("%d已经出栈\n",x);PrintStack(D);x = Pop(D);printf("%d已经出栈\n",x);PrintStack(D);printf("-----栈顶元素-----\n");int y;y=GetTop(D);printf("栈顶元素为%d\n",y);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TM 学习记录--论文阅读1

这里可以查看所有论文。由于作者book只更新到第二章剩下的只有从论文中学习&#xff0c;但书中的目录和论文可以由于对应起来。第一二章可以对应到第一篇论文&#xff0c;这里。

【服务器】在 Linux CLI 下安装 Anaconda

【服务器】在 Linux CLI 下安装 Anaconda 1 系统环境2 下载安装包3 安装 1 系统环境 查看系统信息 cat /etc/os-release2. 查看架构 uname -a # output # Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86…

华为云云耀云服务器L实例评测|Docker部署及应用

文章目录 前言&#x1f4e3; 1.前言概述&#x1f4e3; 2.服务器攻击✨ 2.1 问题描述✨ 2.2 处理方法 &#x1f4e3; 3.Docker简介&#x1f4e3; 4.安装Docker✨ 4.1 卸载旧版docker✨ 4.2 安装依赖包✨ 4.3 安装GPG证书✨ 4.4 配置仓库✨ 4.5 正式安装Docker✨ 4.6 配置用户组✨…

PG 多表连接查询

写法&#xff1a; 使用 select 表名.键名 from 表1 join表2 on 相同的主键 构造出来一张新表 多表要用表名.键名 才能知道是哪一张表 传统写法也行 类型&#xff1a; 内 而外的要这样写

【注解】概述、自定义注解以及元注解

注解——概述、自定义注解以及元注解 1.概述 注解&#xff08;Annotation&#xff09; 就是Java代码里的特殊标记&#xff0c;比如&#xff1a;Override、Test等&#xff0c;作用是让其他程序根据注解信息来决定怎么执行该程序注意&#xff1a;注解可以用在类上、构造器上、…

动态规划-状态机(188. 买卖股票的最佳时机 IV)

状态分类&#xff1a; f[i,j,0]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前未持有股票 所能获得最大利润 f[i,j,1]考虑前i只股票&#xff0c;进行了j笔交易&#xff0c;目前持有股票 所能获得最大利润 状态转移&#xff1a; f[i][j][0] Math.max(f[i-1][j][0],f[…

lv7 嵌入式开发-网络编程开发 07 TCP服务器实现

目录 1 函数介绍 1.1 socket函数 与 通信域 1.2 bind函数 与 通信结构体 1.3 listen函数 与 accept函数 2 TCP服务端代码实现 3 TCP客户端代码实现 4 代码优化 5 练习 1 函数介绍 其中read、write、close在IO中已经介绍过&#xff0c;只需了解socket、bind、listen、acc…

Qt+openCV学习笔记(十六)Qt6.6.0rc+openCV4.8.1+emsdk3.1.37编译静态库

前言&#xff1a; 有段时间没来写文章了&#xff0c;趁编译库的空闲&#xff0c;再写一篇记录文档 WebAssembly的发展逐渐成熟&#xff0c;即便不了解相关技术&#xff0c;web前端也在不经意中使用了相关技术的库&#xff0c;本篇文档记录下如何编译WebAssembly版本的openCV&…

13.(开发工具篇github)如何在GitHub上上传本地项目

一:创建GitHub账户并安装Git 二:创建一个新的仓库(repository) 三、拉取代码 git clone https://github.com/ainier-max/myboot.git git clone git@github.com:ainier-max/myboot.git四、拷贝代码到拉取后的工程 五、上传代码 (1)添加所有文件到暂存

Mac安装Ecplise产品报错:dose not contain the JNI_CreateJavaVM symbol

1. 絮絮叨叨 工作中需要借助Ecplise Memory Analyzer (MAT)分析dump文件&#xff0c;直接下载、安装、运行MAT报错 询问同事后&#xff0c;同事说可以先安装Ecplise&#xff0c;再以插件的形式安装MAT下载、安装好Eclipse&#xff0c;点击运行仍然报错&#xff0c;且错误信息一…

【C语言】循环结构程序设计 (详细讲解)

前言&#xff1a;前面介绍了程序中常常用到的顺序结构和选择结构&#xff0c;但是只有这两种结构是不够的&#xff0c;还有用到循环结构(或者称为重复结构)。因为在日常生活中或是在程序所处理的问题中常常遇到需要重复处理的问题。 【卫卫卫的代码仓库】 【选择结构】 【专栏链…

springmvc-JSR303进行服务端校验分组验证SpringMVC定义Restfull接口异常处理流程RestController异常处理

目录& 1. JSR303 2. JSR303中含有的注解 3. spring中使用JSR303进行服务端校验 3.1 导入依赖包 3.2 添加验证规则 3.3 执行校验 4. 分组验证 4.1 定义分组验证规则 4.2 验证时通过参数指定验证规则 4.3 验证信息的显示 5. SpringMVC定义Restfull接口 5.1 增加s…

ubuntu 22.04 M4Singer 安装部署

成功的指令记录 conda create -n python3.7.12 python3.7.12conda activate python3.7.12(python3.7.12) yeqiangyeqiang-MS-7B23:~/Downloads/ai/M4Singer/code$ python -V Python 3.7.12 (python3.7.12) yeqiangyeqiang-MS-7B23:~/Downloads/ai/M4Singer/code$ python3 -m ve…

分类预测 | MATLAB实现PSO-CNN粒子群算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现PSO-CNN粒子群算法优化卷积神经网络数据分类预测 目录 分类预测 | MATLAB实现PSO-CNN粒子群算法优化卷积神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-CNN多特征分类预测&#xff0c;多特征输入模型&#xf…

Webpack 基础入门以及接入 CSS、Typescript、Babel

一、什么是 Webpack Webpack 是一款 JS 模块化开发的技术框架&#xff0c;其运作原理是将多个 JS 文件关联起来构成可运行的应用程序。 Webpack 拥有丰富的 plugins / loaders 插件生态圈&#xff0c;可以让 js 识别不同的语言如 .css, .scss, .sass, .json, .xml, .ts, .vue…

Web版Photoshop来了,用到了哪些前端技术?

经过 Adobe 工程师多年来的努力&#xff0c;并与 Chrome 等浏览器供应商密切合作&#xff0c;通过 WebAssembly Emscripten、Web Components Lit、Service Workers Workbox 和新的 Web API 的支持&#xff0c;终于在近期推出了 Web 版 Photoshop&#xff08;photoshop.adobe…

BL808学习日志-2-LVGL for M0 and D0

一、lvgl测试环境 对拿到的M1S_DOCK开发板进行开发板测试&#xff0c;博流的官方SDK是支持M0和D0两个内核都进行测试的&#xff1b;但是目前只实现了M0的LVGLBenchmark&#xff0c;测试D0内核中发现很多莫名其妙的问题。一会详细记录。 使用的是开发板自带的SPI显示屏&#xff…

wzsc_文件上传(条件竞争)

打开题目链接&#xff0c;很常见的文件上传框 经过尝试&#xff0c;发现上传东西后会调用upload.php&#xff0c;猜测文件被传到upload目录下 随便传了几个类型的文件&#xff0c;访问upload目录 发现.php文件以及.htaccess、.user.ini这种配置文件都没有传上去 但是通过抓包…

Redis相关概念

1. 什么是Redis&#xff1f;它主要用来什么的&#xff1f; Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提…

深入探讨 Presto 中的缓存

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 Presto是一种流行的开源分布式SQL引擎&#xff0c;使组织能够在多个数据源上大规模运行交互式分析查询。缓存是一种典型的提高 Presto 查询性能的优化技术。它为 Prest…