栈链

栈顶指针和单链表的头指针合二为一
链栈的初始化操作就是构造一个空栈,因此没有必要设头节点,所以直接将栈顶指针置空即可

链栈在入栈前不需要判断栈是否满,只需要为入栈元素动态分配一个结点空间

#include <iostream>
using namespace std;
typedef  int elemtype;
typedef  int status;
typedef struct stacknode
{
	elemtype data;
	stacknode *next;
}stacknode,*linkstack;
//初始化
status initstack(linkstack &s)
{
	s = NULL;
	return 0;
}
//链栈的入栈
status push(linkstack &s,elemtype e)
{
	linkstack p;
	p = new stacknode;
	p->data = e;
	p->next = s;
	s = p;//修改栈顶指针为p
	return 0;
}
//出栈
status pop(linkstack &s,elemtype &e)
{
	if (s == NULL)
		return -1;
	e = s->data;
	linkstack p;
	p = s;
	s = s->next;
	delete p;
	return 0;
}
//取栈顶元素
status gettop(linkstack s)
{
	if (s != NULL)
		return s->data;
}
全部评论

相关推荐

面试官问:为什么不考研?该怎么回答啊😭我说现在的就业环境差到底了,还有就是我不想学数学,感觉面试官笑容都凝固了😢
DayDayNoBug的鲜芋球:我说的是“上学期其实尝试过去探索一些研究的方向,但感觉那些对我来说都没有很大的吸引力,相比起研究我可能更喜欢开发这种实践性的东西,它会让我觉得很有意思并且会为之深入进去”(虽然也不知这个回答怎么样哈哈哈哈哈哈)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务