标签:https 删除 pre 分配 its href src i++ 线性表
目录
(1)定义:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
(2)栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。
(3)图解:
#include<stdio.h>
#include<assert.h>
#define STACK_LEN 5
typedef struct Sqstack
{
int elem[STACK_LEN];
int top;//当前可存放数据的下标
}Sqstack,*Pstack;
void InitStack(Pstack ps)
{
assert(ps!=NULL);
ps->top=0;
}
bool Push(Pstack ps,int val)//压栈
{
assert(ps!=NULL);
if(Isfull(ps))
{
return false;
}
ps->elem[ps->top++]=val;
return true;
}
bool Pop(Pstack ps,int *rtv)//删除、出栈
{
assert(ps!=NULL);
if(IsEmpty(ps))
{
return false;
}
if(rtv!=NULL)
{
ps->top--;
*rtv=ps->elem[ps->top];
}
}
bool GetTop(Pstack ps,int *rtv)//得到栈顶元素, 但是不删除
{
assert(ps!=NULL);
if(IsEmpty(ps))
{
return false;
}
if(rtv!=NULL)
{
*rtv=ps->elem[ps->top-1];
}
}
bool IsEmpty(Pstack ps)//判空
{
assert(ps!=NULL);
return ps->top==0;
}
bool Isfull(Pstack ps)//判满
{
assert(ps!=NULL);
return ps->top==STACK_LEN;
}
void Clear(Pstack ps)//top 指针的操作
{
ps->top=0;
}
void Destroy(Pstack ps);//这里没有动态内存分配
{
Clear(ps);
}
void Show(Pstack ps)
{
for(int i=0;i<ps->top;i++)
{
printf("%d ",ps->elem[i]);
}
printf("\n");
}
#include<iostream>
using namespace std;
class CStack
{
public:
CStack() //默认构造函数
{
mtop=0;
msize=10;
mStack=new int[msize];
}
/*CStack(int size=10) //带参数的构造函数
{
mtop=0;
msize=size;
mStack=new int[msize];
}*/
~CStack() //析构
{
delete[]mStack;
mStack=NULL;
}
void push(int val) //入栈
{
if(full())
{
resize();
}
mStack[mtop++]=val;
}
void pop() //出栈
{
if(empty())
{
return ;
}
mtop--;
}
int top() //获取栈顶元素
{
return mStack[mtop-1];
}
bool full() //判满
{
return mtop==msize;
}
bool empty() //判空
{
return mtop==0;
}
private:
int*mStack;
int mtop;
int msize;
void resize() //二倍扩容
{
int *mtmp=new int[msize*2];
for(int i=0;i<msize;i++)
{
mtemp[i]=mStack[i];
}
delete[]mStack;
mStack=mtmp;
msize*=2;
}
};
标签:https 删除 pre 分配 its href src i++ 线性表
原文地址:https://www.cnblogs.com/earthmolin/p/9922107.html