栈的链式存储结构

链栈结点定义

这里用带头结点的单链表作为存储体。

typedef struct LNode{
	int data; //数据域
	struct LNode *next; //指针域
}LNode; //链栈结点定义

 

链栈的初始化

//链栈的初始化
void InitStack(LNode *&1st){ //1st要改变,用引用型
	1st=(LNode *)malloc(sizeof(LNode)); //制造一个头结点
	1st->next=NULL;
}

 

判断栈空

int isEmpty(LNode *1st){
	if(1st->next==NULL) //链栈为空
		return 1;
	else //链栈不为空
		return 0;
}

 

进栈

void Push(LNode *1st, int x){
	LNode *p;
	p=(LNode *)malloc(sizeof(LNode)); //为进栈元素申请结点空间
	p->next=NULL; //可以不写,但是每当申请新结点时,将其指针域设置为NULL,可以避免一些错误
	//以下3句是链表的头插法
	p->data=x;
	p->next=1st->next;
	1st->next=p;
}

 

出栈

int Pop(LNode *1st, int &x){ //x要改变,要用引用型
	LNode *p;
	if(1st->next==NULL) //栈空则不能出栈,返回0
		return 0;
	//以下是单链表的删除操作
	p=1st->next;
	x=p->data;
	1st->next=p->next;
	free(p);
	return 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值