首页 > 其他分享 >10/9

10/9

时间:2024-10-09 21:33:34浏览次数:6  
标签:10 return int top printf e1 e2


include<stdio.h>

include<malloc.h>

//定义
typedef struct {
int top[2], bot[2];
int* V;
int m;
}DblStack;

/*
初始化:为栈空间分配一个大小为m的数组空间。0号栈的栈顶指针和栈底指针的初始值都是-1;
1号栈的栈顶指针和栈底指针的初始值都是m。表示栈空。
*/
int InitStack(DblStack& S, int m) {

//S.V=new int[m];//写成下面的语句也一样 
S.V = (int*)malloc(m * sizeof(int));
if (!S.V) {
	return 0;//存储分配失败 
}
S.top[0] = -1;
S.bot[0] = -1;
S.top[1] = m;
S.bot[1] = m;
return 1;

}

/*
判断双栈是否为空:0号栈的栈顶指针和栈底指针的初始值都是-1;
1号栈的栈顶指针和栈底指针的初始值都是m。表示栈空。
*/
int IsEmpty(DblStack& S) {
if ((S.top[0] == S.bot[0]) && (S.top[1] == S.bot[1])) {
return 1;//栈空
}
else {
return 0;//栈非空
}
}

/*
判断栈是否满:当S.top[1]-S.top[0]==1时,表示栈满。
*/
int IsFull(DblStack& S) {
if (S.top[1] - S.top[0] == 1) {
return 1;//栈满
}
else {
return 0;//栈不满
}
}

/*
进栈:首先判断栈是否满,若满返回0;否则返回1.
*/
int Push(DblStack& S, int e1, int e2) {
//元素e1进入0号栈,元素e2进入1号栈
if (IsFull(S)) {
return 0;//栈已满,无法入栈
}
// *++S.top[0]=e1;
// *++S.top[1]=e2;
S.V[++S.top[0]] = e1;
//因为栈空间是放在数组中的,所以,进操作类似于向数组中添加元素。
S.V[--S.top[1]] = e2;
return 1;
}

/*
出栈:首先判断栈是否为空,若空返回0;否则返回1。
/
int Pop(DblStack& S, int& e1, int& e2) {
//用e1返回0号栈的栈顶元素;用e2返回1号栈的栈顶元素。
if (IsEmpty(S)) {
return 0;
}
// e1=
--S.top[0];
// e2=*--S.top[1];
e1 = S.V[S.top[0]--];//出栈操作也类似于数组的操作。
e2 = S.V[S.top[1]++];
return 1;
}

int main() {

DblStack S;
int m;
printf("请输入双栈的数组空间大小:");
scanf_s("%d", &m);
if (InitStack(S, m)) {
	printf("双栈初始化成功!\n");
}
else {
	printf("双栈初始化失败!\n");
}

if (IsEmpty(S)) {
	printf("双栈S为空!\n");
}
else {
	printf("双栈S非空!\n");
}

if (IsFull(S)) {
	printf("双栈已满!\n");
}
else {
	printf("双栈未满!\n");
}

int n;
printf("请输入每个栈入栈的元素个数:");
scanf_s("%d", &n);
for (int i = 0; i < n; i++) {
	int e1, e2;
	printf("请输入每个栈的第%d个元素:", i + 1);
	scanf_s("%d%d", &e1, &e2);
	if (Push(S, e1, e2)) {
		printf("入栈成功\n");
	}
	else {
		printf("入栈失败\n");
	}
}

int e1, e2;
Pop(S, e1, e2);
printf("两个栈的栈顶元素出栈:%d %d", e1, e2);

}

标签:10,return,int,top,printf,e1,e2
From: https://www.cnblogs.com/ztn195/p/18455215

相关文章

  • 鲲鹏(arm64)+麒麟V10离线部署KubeSphere3.4.1(精简版 离线包Windows制作)
    前提条件Windows上安装DockerDesktop+WSL。麒麟V10k8s系统初始化的依赖已下载(若没下载过,可参考上篇至鲲鹏麒麟服务器下载或Windows手动下载)Windows手动下载,地址:https://update.cs2c.com.cn/NS/V10/V10SP2/os/adv/lic/base/aarch64/Packages/开始制作2.......
  • 2024.10.09 力扣刷题 盛水最多的容器
    题目:这边是参考了B站UP主的思路进行了解答,采用双下标访问的方式进行。如果要水最多的话,一定是高的那端找低的那端,然后算出面积。如果是低的那端找高的那端,那本身下限就在自己身上,所以不从低的端固定不变。附上代码:intmaxArea(std::vector<int>&height){ if(height.empty......
  • [20241006]跟踪library cache lock library cache pin使用gdb(补充测试3).txt
    [20241006]跟踪librarycachelocklibrarycachepin使用gdb(补充测试3).txt--//补充测试产生光标已经缓存的情况下,生成新子光标的调用librarycachelocklibrarycachepin的情况。1.环境:SCOTT@book01p>@ver2==============================PORT_STRING          ......
  • [20241009]oracle timestamp with time zone数据类型的存储.txt
    [20241009]oracletimestampwithtimezone数据类型的存储.txt--//放假前遇到的问题,开发在表中定义了几个timestampwithtimezone的数据类型,及时更正对方的错误,完全没有使用这样的数据--//类型。类似的问题我以前就遇到,比如全部应用程序的表凡是varchar2数据类型都被定义为nvar......
  • msvcp110丢失怎么解决?三种方法教你修复msvcp110.dll丢失
    1.msvcp110.dll概述1.1定义与作用msvcp110.dll是MicrosoftVisualC++2012RedistributablePackage的一部分,它是一个动态链接库(DLL)文件,对运行时环境至关重要。这个文件包含了C++标准库的实现,为基于VisualC++2012编译的应用程序提供了必要的运行时支持。msvcp1......
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试10月9日新模型预测第105弹
            经过100多期的测试,当然有很多彩友也一直在观察我每天发的预测结果,得到了一个非常有价值的信息,那就是9码定位的命中率非常高,100多期一共只错了12次,这给喜欢打私房菜的朋友提供了极高价值的预测结果~当然了,大部分菜友还是走的正常渠道,因此,得想办法进行缩水,尽可能......
  • Java日总结24-10-9:约束&&数据库设计
    约束的概念及分类:主键的自动增长:在PRIMARYKEY之后添加auto_increment外键约束:2.数据库设计:表的关系(3种):1、一对一;2、一对多(多对一);3、多对多。表的关系之一对多:例:员工和部门之间,一个部门可对应多个员工实现方式:在多的一方建立外键,指向一的一方的主键。表的关系之......
  • 2024CSP前集训10.9
    不想学东西了,,,T1普及题,之前还做过,没啥好说的。T295kmp不对,挂了5分。莫队奇偶性优化还是要加的。对\(s_{i,\dots,n}\)跑kmp,也就是跑了\(n\)遍,答案是: while(m--){ intl=read(),r=read(); intres=0; for(inti=l;i<=r;i++) for(intj=......
  • 10.9
    不会数学真是抱歉了!不会dp真是抱歉了!说好的\(NOIP\)模拟赛呢,开幕给我端上来这么一坨。明天有体育课。A.树上独立集贪心,设\(f_i\)代表\(i\)子树内有多少个未匹配点,若\(\sum\limits_{v\inson_u}f_v>0\)则\(f_i=\sum\limits_{v\inson_u}f_v-1\),否则\(f_i=1\),若......
  • SS241009B. 贪吃蛇(snake)
    SS241009B.贪吃蛇(snake)题意给你一个\(n\timesm\)的矩阵,满足\(n\timesm\le10^6\)。每个点有一个权值\(a_{i,j}\)。从一个点出发,能量值是这个点的点权,然后可以走到四周比它能量小的结点,吃掉它并合并能量。问从每个位置出发,能不能吃完整个地图。思路首先显然的贪心是......