LinkStack.h
#ifndef SHUJUJIEGOU_PRATICE_LINKSTACK_H
#define SHUJUJIEGOU_PRATICE_LINKSTACK_H
typedef int element;
typedef struct stack_node{
element data;
struct stack_node *next;
}StackNode;
typedef struct {
StackNode *top;
int count;
}LinkStack;
//初始化
void initLinkStack(LinkStack *stack);
//压栈,出栈
int pushLinkStack(LinkStack *stack,element value);
int popLinkStack(LinkStack * stack,element* value);
//获得栈顶元素
int gettopLinkStack(LinkStack *stack);
#endif //SHUJUJIEGOU_PRATICE_LINKSTACK_H
LinkStack.c
#include "LinkStack.h"
#include <cstdlib>
#include <stdio.h>
void initLinkStack(LinkStack *stack) {
stack->top = NULL;
stack->count=0;
}
int pushLinkStack(LinkStack *stack,element value) {
StackNode * newNode = (StackNode *)malloc(sizeof(StackNode));
if(newNode==NULL)
return 0;
newNode->data = value;
newNode->next = stack->top;
stack->top = newNode;
stack->count++;
return 1;
}
int popLinkStack(LinkStack * stack,element* top) {
if(stack->top==NULL) {
printf("Stack is empty\n");
return 0;
}
StackNode * temp=stack->top;
*top=temp->data;
stack->top=stack->top->next;
stack->count--;
free(temp);
return 1;
}
int gettopLinkStack(LinkStack *stack) {
if(stack->top==NULL)
return 0;
return stack->top->data;
}