# 链栈

# 1. 概念

链式存储结构:用于收集计算机存储器中所有空闲存储空间,来保存自栈底到栈顶的数据元素。

链栈:链式存储结构栈称为链栈。

# 2. 定义

typedef struct node
{
	StackElementType data;
	struct node *next;
}LinkStackNode;
typedef LinkStackNode *LinkStack;

# 3. 操作

1) 进栈

int Push(LinkStack top, StackElementType x)
/* 将数据元素 x 压入栈 top 中 */
{
	LinkStackNode * temp;
	temp=(LinkStackNode * )malloc(sizeof(LinkStackNode));
	if(temp==NULL) return(FALSE); /* 申请空间失败 */
	temp->data=x;
	temp->next=top->next;
	top->next=temp; /* 修改当前栈顶指针 */
	return(TRUE);
}

2) 出栈

int Pop(LinkStack top, StackElementType *x)
/* 将栈 top 的栈顶元素弹出,放到 x 所指的存储空间中 */
{ 
	LinkStackNode * temp;
	temp=top->next;
	if(temp==NULL)return(FALSE); /* 栈为空 */
	top->next=temp->next;
	*x=temp->data;
	free(temp); /* 释放存储空间 */
	return(TRUE);
}
-->