盏是一种受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。

允许进行插入和删除运算的一端称为栈顶(top),位于栈顶的元素称为栈顶元素。
不允许进行插入和删除运算的另一端称为栈底(bottom)

从栈中删除一个元素称为出栈或退栈

由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把
栈称为后进显出表(Last In First Out,简称FIFO)

 

#include<iostream>
#include<stack>
using namespace std;

//链栈是单链表的特例,所以其类型的定义和变量的说明和单链表一样
struct StackNode{
	int data;     
	StackNode *next;
};

StackNode *top;   //top是栈顶指针,它指向栈顶节点。当top=NULL时,该链栈为空栈;
		  //栈底结点的指针域为空

//初始化链栈
void InitStack(StackNode *top){
	top = NULL;  //将链栈置空
}

//检查链栈是否为空
bool IsEmpty(StackNode *top){   //若空则返回1,否则返回0
	if(top == NULL)
		return 1;
	else
		return 0;
}

//读取栈顶元素
int GetTop(StackNode *top){
	if(top == NULL){
		cout<<"Stack is empty!\n";
		return 0;
	}
	else
		return (top->data);
}


//入栈
StackNode *Push(StackNode *top,int x){
	StackNode *p;    
	p = new StackNode;//步骤1:为待入栈元素x动态分配新结点p
	p->data = x;	  //步骤2:并将x值付给新节点p的数据域
	p->next = top;    //步骤3:将新结点p的指针域指向原栈顶节点
	top = p;          //步骤4:修改栈顶指针top,使其指向新节点p
	return (top);     //步骤5:返回新的栈顶指针
}

//出栈
StackNode *Pop(StackNode *top){
	StackNode *p;
	if(top == NULL){   //步骤1:检查栈是否为空
		cout<<"Stack is empty!"<<endl;
		return NULL;   //如果为空,则提示,并返回空指针
	}
	//不为空:
	else{    
		p = top;		   //保留原栈顶节点指针
		top = top->next;   //从链栈中删除原栈顶节点
		delete (p);		   //释放原栈顶存储空间
		return (top);	   //出栈成功,函数返回新的栈顶指针
	}
}


int main()
{

}


 


——      生命的意义,在于赋予它意义。 

                   原创  http://blog.csdn.net/shuangde800  , By   D_Double




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值