【数据结构】栈链式存储的实现
//堆栈的链式存储实现
#include<iostream>
using namespace std;
typedef int element;
typedef struct Node {
element data;
struct Node *next;
}linkstack;
void Initial(linkstack *s)
{
s->next = NULL;
}
//入栈
void push(element item, linkstack *s)
{
Node *tmp;
tmp = new Node;
tmp->data = item;
tmp->next = s->next;//注意指针顺序
s->next = tmp;
}
//出栈
element pop(linkstack *s)
{
if (s->next == NULL)
{
cout << "栈为空,无法出栈" << endl;
}
else
{
Node *tmp;
tmp = s->next;
element item = tmp->data;
cout << "出栈元素为:" << item << endl;
s->next = tmp->next;
delete tmp;
return 0;
}
}
//栈的遍历
void visit(linkstack *s)
{
if (s->next == NULL)
{
cout << "栈为空,无法出栈" << endl;
}
else
{
Node *tmp;
element e;
tmp = s->next;
cout << "栈中元素为:";
while (tmp)
{
e = tmp->data;
cout << e;
tmp = tmp->next;
}
}
}
void main()
{
linkstack s;
Initial(&s);
int i, count, count1, num2;
element num;
cout << "请输入入栈的个数:";
cin >> count;
cout << "请输入入栈元素:" << endl;
for (i = 0;i<count;i++)
{
cin >> num;
push(num,&s);
}
cout << "请输入出栈的个数:";
cin >> count1;
for (i = 0;i<count1;i++)
{
pop(&s);
}
cout << "-----------"<<endl;
visit(&s);
cout << endl;
}
结果:
分析:
-
栈具有先进后出的功能
-
栈只有栈顶是可以访问的
-
栈的链式存储结构实际上就是一个单链表,叫做链栈。插入和删除操作只能在链栈的栈顶进行