#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#数据结构:栈的应用:括号匹配问题 假设表达式中包含三种括号:圆括号、方括号和花括号,它们可互相嵌套,如 ( [...