链栈的操作

目录

链栈的初始化

链栈判空

取栈顶元素

链栈的入栈

链栈的出栈

链栈是运算受限的单链表,只在链表头部操作

typedef struct StackNode{
	SElemType data;
	struct StackNode *next;
}StackNode, *LinkStack;

LinkStack s;
  • 链表的头部就是栈顶
  • 不需要头结点
  • 不存在栈满的情况
  • 空栈相当于头指针指向空
  • 插入删除仅在栈顶进行

 

链栈的初始化

void InitStack(LinkStack &s){
	s = NULL;    //构造空栈,栈顶指针置为空 
	return OK;
} 

链栈判空

Status StackEmpty(LinkStack s){
	if(s == NULL) return TRUE;
	else return FALSE;
}

取栈顶元素

SElemType GetTop(LinkStack s){
	if(s != NULL)
		return s->data;
}

链栈的入栈

  

Status Push(LinkStack &s, SElemType e){
	p = (LinkStack)malloc(sizeof(StackNode));
	
	p->data = e;  //新结点数据域为e
	p->next = s;  //新结点插入栈顶
	s = p;        //修改栈顶指针
	
	return OK; 
}

链栈的出栈

 

 

Status Pop(LinkStack &s,SElemType e){
	if(s == NULL) return ERROR;
	
	e = s->data;
	p = s;
	s = s->next;
	
	free(p);
	return OK;
} 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值