栈的链式存储
链式栈的节点
typedef struct LINKNODE{
struct LINKNODE* next;
}Linknode;
链式栈
typedef struct LINKSTACK{
Linknode node;
int size;
}Linkstack;
- 初始化函数
Linkstack* Init_Linkstack(){
Linkstack* stack=(Linkstack*)malloc(sizeof(Linkstack));
stack->head.next=NULL;
stack->size=0;
return stack;
}
- 入栈
void Push_Linkstack(Linkstack* stack,Linknode* data){
if(stack==NULL){
return;
}
if(data==NULL){
return;
}
data->next=stack->head.next;
stack->head.next=data;
stack->size++;
}
- 出栈
void Pop_Linkstack(Linkstck* stack){
if(stack==NULL){
return;
}
//第一个有效节点
Linknode* pnext=stack->head.next;
stack->head.next=pnext->next;
stack->size--;
}
- 返回栈顶元素
Linknode* Top_Linkstack(Linkstack* stack){
if(stack==NULL){
return;
}
if(stack->size){
return NULL;
}
return stack->head.next;
}
- 返回栈的元素个数
int Size_LinkStack(Linkstack* stack){
if(stack==NULL){
return -1;
}
return stack->size;
}
- 清空栈
void Clear_Linkstack(Linkstack* stack){
if(stack==NULL){
return;
}
stack->head.next=NULL;
stack->size=0;
}
- 销毁栈
void FreeSpace_Linkstack(Linkstack* stack){
if(stack==NULL){
return;
}
free(stack);
}