数据结构-链栈操作实践
数据结构-链栈操作实践
采用链式存储实现栈的初始化、入栈、出栈操作
#include<iostream>
using namespace std;
// 定义链栈的结构
typedef struct LinkNode {
int data;
struct LinkNode* next;
}LinkNode, *LinkStack;
/** * 初始化链栈 * @param LS 链栈LS */
void InitStack(LinkStack& LS) {
LS = (LinkStack)malloc(sizeof(LinkNode));
if (LS)
LS->next = NULL;
}
/** * 链栈的入栈操作 * @param LS 链栈LS * @param x 入栈元素x */
void Push(LinkStack& LS, int x) {
LinkNode* p = LS;
p->data = x; // 先入栈
LinkNode* s = (LinkNode*)malloc(sizeof(LinkNode));
if (s) {
s->next = p; // 再加1
LS = s;
}
}
/** * 链栈的出栈操作 * @param LS 链栈LS * @param x 通过x返回出栈元素 */
void Pop(LinkStack& LS, int& x) {
LinkNode* p = LS->next;
LS->next = p->next; // 先减1
x = p->data; // 再出栈
free(p);
}
int main() {
int n;
cin >> n;
LinkStack LS;
InitStack(LS);
int x;
cout << "入栈:";
for (int i = 0; i < n; i++)
{
cin >> x;
Push(LS, x);
}
cout << "出栈:";
for (int i = 0; i < n; i++)
{
Pop(LS, x);
cout << x << " ";
}
cout << endl;
return 0;
}
创作不易,喜欢的话加个关注点个赞,谢谢谢谢谢谢!