#include "stdio.h"
#include "stdlib.h"
typedef int datatype_t;
typedef struct node {
datatype_t data;
struct node *next;
} linkstack_t;
linkstack_t *linkstack_create() {
linkstack_t *linkstack = (linkstack_t *) malloc(sizeof(linkstack_t));
if (linkstack == NULL) {
exit(0);
}
linkstack->next = NULL;
return linkstack;
}
int linkstack_push(linkstack_t *stack, datatype_t value) {
linkstack_t *temp = (linkstack_t *) malloc(sizeof(linkstack_t));
if (temp == NULL) {
return -1;
}
temp->data = value;
temp->next = stack->next;
stack->next = temp;
return 1;
}
int linkstack_empty(linkstack_t *stack) {
return stack->next == NULL ? 1 : 0;
}
datatype_t linkstack_pop(linkstack_t *stack) {
if (linkstack_empty(stack)) {
return -1;
}
linkstack_t *temp = stack->next;
stack->next = temp->next;
datatype_t value = temp->data;
free(temp);
temp = NULL;
return value;
}
void linkstack_show(linkstack_t *stack) {
while (stack->next != NULL) {
stack = stack->next;
printf("%d ", stack->data);
}
printf("\n");
}
int main() {
linkstack_t *stack = linkstack_create();
linkstack_push(stack, 11);
linkstack_push(stack, 12);
linkstack_push(stack, 13);
linkstack_push(stack, 14);
linkstack_show(stack);
printf("出栈%d\n", linkstack_pop(stack));
printf("出栈%d\n", linkstack_pop(stack));
linkstack_show(stack);
return 0;
运行效果