目录
文章目录
实验要求:
一、初始化
二、入栈
三、出栈
四、取栈顶
五、输出
六、判空
总结
代码已经过DEVC++,Visual Studio2022运行,可直接拷贝。
一、初始化
int InitStack(SqStack& S)
{
S.base = new SElemType[MAXSIZE];
if (!S.base)
return 0;
S.top = S.base;
S.StackSize = MAXSIZE;
return 1;
}
二、入栈
int PushStack(SqStack& S,int e)
{
if (S.base - S.top == S.StackSize)cout << "栈满" << endl;
*S.top = e;
S.top++;
return 1;
}
int PopStack(SqStack&
三、出栈
int PopStack(SqStack& S, SElemType &e)
{
if (S.top == S.base)cout << "栈空!" << endl;
S.top--;
e = *S.top;
return 1;
}
四、取栈顶
int GetStack(SqStack S)
{
if (S.top != S.base)
return *(S.top - 1);
else cout << "栈空!" << endl;
}
五、输出
void ShowStack(SqStack S)
{
cout << "栈由底到顶依次为:" << endl;
SElemType* p = S.base;
while (p != S.top)
{
cout << *p << endl;
p++;
}
}
六、判断栈空
int Empty(SqStack S)
{
if (S.top == S.base)
return 1;
else return 0;
}
#include
#include
#define MAXSIZE 100
typedef int SElemType;
using namespace std;
typedef struct
{
SElemType* base, * top;
int StackSize;
}SqStack;
int InitStack(SqStack& S);
int PushStack(SqStack& S, int e);
int PopStack(SqStack& S, SElemType& e);
int GetStack(SqStack S);
void ShowStack(SqStack S);
int Empty(SqStack S);
void menu();
int main()
{
menu();
return 0;
}
int InitStack(SqStack& S)
{
S.base = new SElemType[MAXSIZE];
if (!S.base)
return 0;
S.top = S.base;
S.StackSize = MAXSIZE;
return 1;
}
int PushStack(SqStack& S,int e)
{
if (S.base - S.top == S.StackSize)cout << "栈满" << endl;
*S.top = e;
S.top++;
return 1;
}
int PopStack(SqStack& S, SElemType &e)
{
if (S.top == S.base)cout << "栈空!" << endl;
S.top--;
e = *S.top;
return 1;
}
int GetStack(SqStack S)
{
if (S.top != S.base)
return *(S.top - 1);
else cout << "栈空!" << endl;
}
void ShowStack(SqStack S)
{
cout << "栈由底到顶依次为:" << endl;
SElemType* p = S.base;
while (p != S.top)
{
cout << *p << endl;
p++;
}
}
int Empty(SqStack S)
{
if (S.top == S.base)
return 1;
else return 0;
}
void menu()
{
SqStack S;
int e;
int choose;
while (6)
{
cout << "1.初始化栈 2.元素入栈 3.删除栈顶元素" << endl;
cout << "4.取栈顶元素 5.遍历栈 6.判断栈空" << endl;
cout << "请输入选择的数字" << endl;
cin >> choose;
switch (choose)
{
case 1:
if (InitStack(S)) cout << "初始化栈成功" << endl;
else cout << "失败" << endl;
break;
case 2:
int m;
cout << "请输入入栈的元素(-1结束):" << endl;
cin >> m;
while (m != -1)
{
PushStack(S, m);
cout << "请输入入栈的元素:" << endl;
cin >> m;
}
break;
case 3:
if (PopStack(S, e)) cout << "删除成功!" << endl;
else cout << "删除失败!" << endl;
break;
case 4:
cout << GetStack(S) << endl;
break;
case 5:
ShowStack(S);
break;
case 6:
if (Empty(S)) cout << "栈空!" << endl;
else cout << "栈不为空!" << endl;
break;
default:
cout << "输入不合法" << endl;
break;
}
system("pause");
system("cls");
}
}
总结
基本 *** 作如上
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)