数据结构C语言版:栈的链式存储
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR -1
typedef char ElemType;
typedef struct StackNode {
ElemType data;
struct StackNode* next;
}StackNode,*LinkStackPtr;
typedef struct LinkStack {
LinkStackPtr top;
int count;
}LinkStack;
InitStack(LinkStack* s) {
s = (LinkStack*)malloc(sizeof(LinkStack));
if (!s) {
exit(0);
}
s->top = NULL;
s->count = 0;
return s;
}
Push(LinkStack* s, ElemType e) {
LinkStackPtr p;
p = (LinkStackPtr*)malloc(sizeof(StackNode));
p->data = e;
p->next = s->top;
s->top = p;
s->count++;
return OK;
}
Pop(LinkStack* s, ElemType* e) {
LinkStackPtr p;
if (s->count == 0) {
return ERROR;
}
*e = s->top->data;
p = s->top;
s->top = p->next;
free(p);
s->count--;
return OK;
}
int main() {
LinkStack* s = NULL;
ElemType e;
s = InitStack(s);
printf("请输入你要入栈的的数据输入回车结束!\n");
printf("入栈序列为:");
scanf("%c", &e);
while (e != '\n') {
Push(&s, e);
scanf("%c", &e);
}
printf("出栈序列为:");
while (s->count != 0) {
Pop(&s, &e);
printf("%c", e);
}
putchar('\n');
}