#include<stdio.h> #include<stdlib.h> #define MaxSize 20000 typedef struct { int data[MaxSize]; int top; }Stack; Stack st; int Push(int val) { if (st.top == MaxSize-1) { return 0; } st.data[st.top++] = val; return 1; } int Pop() { if (st.top == 0) { return -1; } return st.data[--st.top]; } int input(char* str, int i) { int b = 0; while (str[i] != '\0') { b = b * 10 + str[i] - '0'; i++; } return b; } int main() { int times = 0; int a = 0, b = 0, i = 0; char str[100]; gets(str); times = input(str, 0); while (times--) { gets(str); if (str[0] == '1') { b = input(str, 2); Push(b); } else { if (st.topIdx == 0) { printf("invalid\n"); } else { printf("%d\n", Pop()); } } } return 0; }
时间: 2024-04-26 12:26:25 浏览: 66
这段代码是一个简单的栈的实现,可以通过输入命令来进行数据的入栈和出栈操作。具体实现如下:
首先定义了一个结构体 Stack,表示栈结构,其中包括一个整型数组 data 和一个整型 top,top 表示当前栈顶元素的位置。
接着定义了两个函数 Push 和 Pop,分别表示入栈和出栈操作。其中 Push 函数将一个整型值 val 入栈,如果栈已满则返回 0,否则返回 1;Pop 函数将栈顶元素出栈并返回其值,如果栈为空则返回 -1。
接下来定义了一个 input 函数,用于将一个字符串转换成整型数值。该函数首先将字符串中的数字字符转换成实际值,并将其存储在变量 b 中,然后返回 b 的值。
最后在主函数中,首先通过输入获取操作次数 times,然后在循环中根据输入的命令来执行相应的操作。如果命令是 1,则将输入的数字入栈;如果命令是 2,则将栈顶元素出栈并输出其值。如果栈为空,则输出 "invalid"。
相关问题
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
优化这段代码#include<stdio.h> #include<stdlib.h> #include<malloc.h> #include<conio.h> #define OK 1 #define error 0 #define MVNum 100 #define MAXSIZE 10 typedef int OtherInfo,QElemtype; typedef char VerTexType; //结构体定义 typedef struct ArcNode{ int adjvex;
首先,该段代码中包含了一些不必要的头文件,例如:conio.h,malloc.h等。建议只保留stdio.h和stdlib.h。
其次,可以将#define OK 1和#define error 0替换为枚举类型,使代码更加清晰易读。
最后,在结构体定义中,可以将OtherInfo和QElemtype合并为一个类型,避免定义过多类型。同时,也可以将结构体中的变量类型进行优化,例如将int类型的adjvex改为short或者char类型。
重构后的代码如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100
#define MAX_ARC_NUM 10
typedef enum {
ERROR = 0,
OK = 1
} Status;
typedef char VertexType;
typedef int ArcType;
typedef struct ArcNode {
int adjvex;
struct ArcNode* nextarc;
ArcType* info;
} ArcNode;
typedef struct VNode {
VertexType data;
ArcNode* firstarc;
} VNode, AdjList[MAX_VERTEX_NUM];
typedef struct {
AdjList vertices;
int vexnum, arcnum;
} ALGraph;
```
希望可以帮到你。
阅读全文