链栈的代码
前言
这个是基于上一篇文章数据结构后写的代码。
链栈的代码
#include "iostream"
using namespace std;
typedef struct stacknode {
int data;
struct stacknode* next;
}stacknode,*linkstack;
linkstack s;
//栈的初始化
linkstack initstack(linkstack& s)
{
//构建一个空栈,栈顶指针置为空;
s = NULL;
return s;
}
//判断链栈是否为空
void stackempty(linkstack s)
{
if (s == NULL)
cout << "链栈为空" << endl;
else
cout << "链栈不为空" << endl;
}
//链栈的入栈
void push(linkstack& s)
{
cout << "请输入你要入栈的元素" << endl;
int e;
cin >> e;
linkstack p;
p = new stacknode;
p->data = e;//将新节点数据域置为e;
p->next = s;//将新节点插入栈顶
s = p; //修改栈顶指针;
}
//链栈的出栈
void pop(linkstack& s)
{
int e;
linkstack p;
if (s == NULL)
cout << "栈以为空无法出栈" << endl;
e = s->data;
p = s;
s = s->next;
delete p;
}
//取栈顶元素
void gettop(linkstack &s)
{
if (s != NULL)
cout << s->data << endl;
}
//创建栈
linkstack creatstack(linkstack &s)
{
cout << "请输入你要创建栈的元素个数" << endl;
int n;
cin >> n;
while (n > 0)
{
push(s);
n--;
}
return s;
}
//销毁栈
void destrystack(linkstack &s)
{
delete(s);
}
//遍历栈
void printstack(linkstack& s)
{
cout << "栈的元素为" << endl;
while (s != NULL)
{
cout << s->data << " ";
s = s->next;
}
cout << endl;
}
void meau()
{
cout << "********1、判断栈是否为空 2、入栈*********" << endl;
cout << "********3、出栈 4、取栈顶元素*********" << endl;
cout << "********5、销毁栈 6、遍历栈*********" << endl;
cout << "********7、退出 " << endl;
}
int main()
{
linkstack s;
initstack(s);
int choice;
cout << "创建栈" << endl;
creatstack(s);
while (1)
{
meau();
cout << "请输入菜单号" << endl;
cin >> choice;
if (choice == 7)
break;
switch (choice)
{
case 1:stackempty(s); break;
case 2: push( s); break;
case 3: pop(s); break;
case 4: gettop(s); break;
case 5: destrystack(s); break;
case 6: printstack(s); break;
default:cout << "输入错误" << endl; break;
}
}
return 0;
}
运行的结果
创建栈 请输入你要创建栈的元素个数 5 请输入你要入栈的元素 1 请输入你要入栈的元素 2 请输入你要入栈的元素 3 请输入你要入栈的元素 4 请输入你要入栈的元素 5 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 1 链栈不为空 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 2 请输入你要入栈的元素 8 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 4 8 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 6 栈的元素为 8 5 4 3 2 1 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 5 ********1、判断栈是否为空 2、入栈********* ********3、出栈 4、取栈顶元素********* ********5、销毁栈 6、遍历栈********* ********7、退出 请输入菜单号 7 D:c++1x64Debug1.exe (进程 23216)已退出,代码为 0。 要在调试停止时自动关闭控制台,请启用“工具”->“选项”->“调试”->“调试停止时自动关闭控制台”。 按任意键关闭此窗口. . .
下一篇是关于队列的代码。



