本篇代码是基于数据结构中栈的基本操作以及实现来进行编写的,由于只是当做练习来加深理解,所以没有过多地考虑程序的健壮性。不仅有顺序栈还有链栈,以及栈在递归中的作用,像斐波那契以及hanoi塔问题的算法都用到了递归,有时间接下来的文章会介绍。
栈与顺序表有些像,这里不对其进行详细介绍可以看书。
#include <iostream>
#include <stdio.h>
using namespace std;
typedef int SelemType;
typedef struct
{
SelemType *top;
SelemType *base;
int stacksize;
}SqStack;
void Initial(SqStack &S)//初始化
{
S.base = new SelemType [100];
if(!S.base)
return ;
S.top = S.base;
S.stacksize = 100;
}
int Insert(SqStack &S)//单个元素插入
{
printf("请输入插入元素:");
scanf("%d",&*S.top++);
}
int Create(SqStack &S,int a)
{
int n;
if(S.top-S.base == S.stacksize)
return -1;
printf("请输入要插入的元素个数:");
scanf("%d",&n);
printf("请输入:");
for(int i =1;i<=n;i++)
{
scanf(&#