先学明白链表,链栈就不是问题,这个出的几率比顺序栈大,因为顺序栈太过简单
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
using namespace std;
初始化
//定义结构体
typedef struct LinkNode
{
int data;
struct LinkNode *next;
}LinkNode, * LinkStack;
//建栈,初始化
void initStack(LinkStack &s)
{
s = (LinkStack)malloc(sizeof(LinkNode));
s->next = NULL;
}
判断是否为空
//判断栈是否为空(链栈不需要判断是否已满,结点无限制创建)
bool isEmpty(LinkStack s)
{
if (s->next == NULL)
return true;
else
return false;
}
入栈(向栈顶插入元素)
//入栈
void push(LinkStack &s, int x)
{
LinkStack p = s;
LinkStack q = (LinkStack)malloc(sizeof(LinkNode));
q->next = p->next;
p->next = q;
q->data = x;
}
出栈(删除栈顶元素)
//出栈
void pop(LinkStack &s)
{
LinkStack p = s->next;
s->next = p->next;
p->next = NULL;
free(p);
}
读取(返回栈顶元素)
//最简单粗暴的是直接返回栈顶元素(常用)
int getTop(LinkStack s)
{
if (!isEmpty(s)) return s->next->data;
else return false;
}
发现有问题了,及时跟我反应
返回目录:
https://www.acwing.com/file_system/file/content/whole/index/content/5976074/