链式栈及其基本操作c语言实现
上次我们讲了顺序栈的实现,事实上栈还可以通过链表实现,实现代码如下,需要学习的同学可以看一下,如有疑问,欢迎留言。
#include<stdio.h>
#include<stdlib.h>
typedef struct stack {
int data;
stack* next;
}stack;
void enstack(stack *s,int e) {
stack* p = (stack*)malloc(sizeof(stack));
p->data = e;
p->next = s->next;
s->next = p;
}
void out_stack(stack* &s,int& e) {
e = s->next->data;
stack *p = s->next;
s->next = p->next;
free(p);
}
void init_stack(stack* &s) {
s = (stack*)malloc(sizeof(stack));
s->next = NULL;
}
bool stack_empty(stack* s) {
if (s->next == NULL)
return true;
else return false;
}
int main() {
stack * s;
init_stack(s);
int a = 6,b;
enstack(s, 6);
printf("\n%d", stack_empty(s));
out_stack(s, b);
printf("\n%d ", b);
printf("\n%d", stack_empty(s));
return 0;
}