#include<iostream>
#include<string>
using namespace std;
struct student
{
int sno;
string name;
};
typedef struct stack //栈的数据结构
{
student *mat;//学生结构体数组
int top;
int size;
}*pstack;
void create_stack(pstack &p, int size)//创建栈
{
p = new stack();
p->mat = new student[size];
p->top = -1;
p->size = size;
}
bool push(pstack p, student &s)//进栈
{
if (p->top >= p->size)
return false;
p->top++;
p->mat[p->top] = s;
return true;
}
bool pop(pstack p, student &s)//出栈
{
if (p->top == -1)
return false;
s = p->mat[p->top];
p->top--;
return true;
}
bool top(pstack p, student &s)//读栈顶元素
{
if (p->top == -1)
return false;
s = p->mat[p->top];
return true;
}
bool stack_is_empty(pstack p)//判断栈空
{
if (p->top == -1) return true;
return false;
}
void freestack(student *s)
{
delete[]s;
}
int main() {
stack *s;
create_stack(s, 10);
student s1[5] = { {111,"jwta"},{222,"jwtb"},{333,"jwtc"},{444,"jwtd"},{555,"jwte"} };
cout << "进栈顺序:" << endl;
for (int i = 0; i < 5; i++) {
push(s, s1[i]);
cout << s1[i].sno << " " << s1[i].name << endl;
}
cout << endl;
student s2;
cout << "出栈顺序:" << endl;
for (int i = 0; i < 5; i++)
{
pop(s, s2);
cout << s2.sno << " " << s2.name << endl;
}
freestack(s->mat);
system("pause");
return 0;
}
C++实训--栈及其应用
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 本篇文章主要介绍了什么是栈(Stack) 、什么是堆( Heap),以及栈和堆的优缺点,同时介绍了应该什么时候使用...
- C#数据结构:栈的应用:括号匹配问题 假设表达式中包含三种括号:圆括号、方括号和花括号,它们可互相嵌套,如 ( [...