栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
定义一个链式存储的栈
typedef int ElementType;
typedef struct Node
{
ElementType data;
struct Node *next;
} Node, *LinkStack;
创建一个带头节点的链栈
LinkStack createStack(){
LinkStack S = (LinkStack)malloc(sizeof(LinkStack));
S->next = NULL;
return S;
}
将数据压入栈中,成功入栈返回1,若没有存储空间则返回0。
int push(LinkStack S, ElementType x){
Node *n = (Node *)malloc(sizeof(Node));
if (n == NULL)
return 0;
n->data = x;
n->next = S->next;
S->next = n;
return 1;
}
判空