栈:线性表的一种,符合先进后出,比如子弹夹,排队买东西。
我们在使用的时候可以需要创建顺序栈和链栈。
1、顺序栈
顺序栈在初始化,创建,插入,删除等操作时传的是结构体对象,
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#define maxsize 10
typedef struct Sqstack
{
int size;
int * top;
int* base;
}Sqstack,*SqNode;
void initSqstack(Sqstack& Sq)
{
Sq.base = new int[maxsize];
if (!Sq.base)
{
cout << "开辟失败" << endl;
}
Sq.top = Sq.base;
int size = maxsize;
}
void pushSqstack(Sqstack& Sq)
{
if (Sq.top - Sq.base == maxsize)
{
return;
}
int a = 0;
cout << "请输入入栈的值" << endl;
cin >> a;
*Sq.top = a;
Sq.top++;
}
void output(Sqstack& Sq)
{
Sq.top--;
cout << *Sq.top << endl;
}
int main()
{
Sqstack Sq;
initSqstack(Sq);
pushSqstack(Sq);
output(Sq);
return 0;
}
2、链栈
顺序栈在初始化,创建,插入,删除等操作时传的是结构体指针
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
typedef struct Sqstack
{
int val;
struct Sqstack* next;
}Sqstack,*SqNode;
void initSqstack(SqNode &Sq)
{
Sq = NULL;
}
void creatSqstack(SqNode& Sq)
{
Sqstack* p = new Sqstack;
int a = 0;
cout << "请输入入栈的值" << endl;
cin >> a;
p->val = a;
p->next = Sq;
Sq = p;
}
void output(SqNode& Sq)
{
if (Sq)
{
cout << Sq->val << endl;
Sq = Sq->next;
}
}
int main()
{
SqNode Sq;
initSqstack(Sq);
creatSqstack(Sq);
output(Sq);
return 0;
}
以上只做了栈的初始化、入栈和出栈的基本功能。