头文件
cpp
#pragma once
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<assert.h>
using namespace std;
typedef struct stacknode {
int data;
stacknode* next;
}stacknode;
typedef struct linkstack {
int cursize;
stacknode* top;
}linkstack;
//1.初始化
void InitStack(linkstack* ps);
//2.栈的元素个数
size_t StackLength(const linkstack* ps);
//3.判空
bool IsEmpty(const linkstack* ps);
//4.入栈
bool Push(linkstack* ps, int val);
//5.打印
void PrintStack(const linkstack* ps);
//6.出栈并获取栈顶元素
bool Pop(linkstack* ps, int* pval);
//7.获取栈顶元素
bool GetTop(linkstack* ps, int* pval);
//8.清空
void ClearStack(linkstack* ps);
//9.销毁
void DestroyStack(linkstack* ps);
源文件
cpp
#include"链栈.h"
//1.初始化
void InitStack(linkstack* ps) {
assert(ps != nullptr);
ps->cursize = 0;
ps->top = nullptr;
}
//2.栈的元素个数
size_t StackLength(const linkstack* ps) {
assert(ps != nullptr);
return ps->cursize;
}
//3.判空
bool IsEmpty(const linkstack* ps) {
assert(ps != nullptr);
return ps->cursize == 0;
}
//4.入栈
bool Push(linkstack* ps, int val) {
assert(ps != nullptr);
stacknode* p = (stacknode*)malloc(sizeof(stacknode));
if (p == nullptr)return false;
p->data = val;
p->next = ps->top;
ps->top = p;
ps->cursize++;
return true;
}
//5.打印
void PrintStack(const linkstack* ps) {
assert(ps != nullptr);
if (IsEmpty(ps))return;
for (stacknode* p = ps->top; p != nullptr; p = p->next) {
cout << p->data << " ";
}
cout << endl;
}
//6.出栈并获取栈顶元素
bool Pop(linkstack* ps, int* pval) {
assert(ps != nullptr&&pval!=nullptr);
if (IsEmpty(ps))return false;
*pval = ps->top->data;
stacknode*p=ps->top;
ps->top = ps->top->next;
free(p);
p = nullptr;
ps->cursize--;
return true;
}
//7.获取栈顶元素
bool GetTop(linkstack* ps, int* pval) {
assert(ps != nullptr);
if (IsEmpty(ps))return false;
*pval = ps->top->data;
return true;
}
//8.清空
void ClearStack(linkstack* ps) {
assert(ps != nullptr);
if (IsEmpty(ps))return;
stacknode* p = ps->top;
while (p) {
stacknode* k = p->next;
free(p);
p = k;
}
p = nullptr;
ps->cursize = 0;
}
//9.销毁
void DestroyStack(linkstack* ps) {
assert(ps != nullptr);
ClearStack(ps);
}
int main() {
return 0;
}