前言
链栈的基本操作包括:1.初始化栈。2.销毁栈。3.判断栈是否为空。4.进栈
5.出栈。6.取栈顶元素。
在此之前我们先定义好链栈的数据类型
typedef int ElemType;
typedef struct linknode {
ElemType data;
struct linknode* next;
}LinkStNode;
一、初始化栈
//初始化栈
void InitStack(LinkStNode*&s) {
s = (LinkStNode*)malloc(sizeof(LinkStNode));
s->next = NULL;
}
二、销毁栈
//销毁栈
void DestoryStack(LinkStNode*& s) {
LinkStNode* pre = s;
LinkStNode* p = s->next;
while (p != NULL) {
free(pre);
pre = p;
p = p->next;
}
free(pre);
}
三、判断栈是否为空
//判断栈是否为空
bool StackEmpty(LinkStNode* s) {
return (s->next == NULL);
}
四、进栈/压栈
//进栈
void push(LinkStNode*&s,ElemType e) {
LinkStNode* p;
p = (LinkStNode*)malloc(sizeof(LinkStNode));
p->data = e;
p->next = s->next;
s->next = p;
}
五、出栈
//出栈
bool pop(LinkStNode*& s, ElemType e) {
LinkStNode* p;
if (s->next == NULL) {
return false;
}
else {
p = s->next;
e = p->data;
s->next = p->next;
free(p);
return true;
}
}
六、取栈顶元素
//取栈顶元素
bool GetTop(LinkStNode* s, ElemType& e) {
if (s->next == NULL) {
return false;
}
else {
e = s->next->data;
return true;
}
}
总结
这里仅展示代码思想,实际并不一定能运行,其中可能存在错误!可以多多指正
学习数据结构需要多敲代码,将代码思维转换成自己的思维