提示:本文代码主要是根据 数据结构教程5-李春葆改写的
前言
书中:
3.13中的栈的链式存储结构及其基本运算的实现(顺序存储结构比较简单,这里不写了)
全文使用C++,比书中的算法更详细点,并且通过主函数实现栈的基本操作了。
一、实验目的
功能:声明栈 ,初始化栈 , 添加栈的元素 , 销毁栈 , 判断栈是否为空 , 进栈 , 出栈 , 取栈顶元素 , 遍历栈 。
二、每个功能的具体函数
提示:这里只写了比较重要的函数
1.添加栈元素
代码如下(示例):
void CreateNode(LinkStNode *&s)
{
cout << "添加数据,输入-1为结束" << endl;
ElemType e=0;
while (true)
{
cin >> e;
if (e == -1)
break;
LinkStNode* p;
p = (LinkStNode*)malloc(sizeof(LinkStNode)); //新建结点p
p->data = e; //存放元素e
p->next = s->next; //将p节点插入作为首节点
s->next = p;
s->length++;
}
}
2.进栈
代码如下(示例):
void Push(LinkStNode*& s)
{
cout << "请输入你添加数据" << endl;
ElemType e;
cin >> e;
LinkStNode* p;
p = (LinkStNode*)malloc(sizeof(LinkStNode)); //新建结点p
p->data = e; //存放元素e
p->next = s->next; //将p节点插入作为首节点
s->next = p;
s->length++;
}
3.出栈
代码如下:
bool Pop(LinkStNode*& s)
{
LinkStNode* p;
if (s->next == NULL) //判断为空的情况
{
cout << "栈为空,无需出栈" << endl;
return false;
}
p = s->