c++实现链栈的基本操作

//链栈
#include
using namespace std;
//链栈的存储结构
typedef int selemtype;
typedef struct  stacknode
{
	selemtype data;		//数据域 
	struct stacknode *next;//指针域 
	
}stacknode ,*linkstack; 

//1.链栈的初始化操作
/*
步骤:
构造一个空栈,并将头指针置空(因为没必要设头节点) 
*/ 
bool zerostack(linkstack &s)
{
	s=NULL;			//链表的名字可以代替头指针 
	return true;	
} 

//2.入栈
/*
步骤:
为入栈的元素动态分配一个节点空间(因为与顺序栈不同,不用判断栈是否已满)
 1.为入栈元素e分配空间,并用指针p指向
 2.将新节点数据域置为e
 3.将新节点插入栈顶
 4.修改栈顶指针为p 
*/ 
bool push(linkstack &s,selemtype e)
{
	linkstack p=new stacknode;
	p->data=e;
	p->next=s;//插入栈顶 
	s=p; 	//修改栈顶指针为p 
}

//出栈
/*
步骤:
1.判断栈是否为空,若空则返回false
2.将栈顶元素赋值给e
3.临时保存栈顶元素的空间,已备释放
4.修改栈顶指针,指向新的栈顶指针
5.释放原栈顶元素的空间 
*/ 
bool pop(linkstack &s, selemtype &e)
{
	if(s=NULL) return NULL;
	e=s->data;
	linkstack p=s;
	s=s->next;
	delete p;
	return true;
} 

//取栈顶元素
/*
步骤:
判断栈非空,返回栈顶元素 
*/ 
selemtype getselem(linkstack s)
{
	if(s!=NULL)
		return s->data;
 } 
int main() 
{
	return 0;
}

你可能感兴趣的:(数据结构)