# 链栈
# 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); | |
} |