1数据结构——链式栈c代码实现
时间: 2023-11-12 16:03:36 浏览: 57
```c
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct Node {
ElemType data;
struct Node *next;
} LinkStack;
void InitStack(LinkStack **s) {
*s = (LinkStack *)malloc(sizeof(LinkStack));
(*s)->next = NULL;
}
int StackEmpty(LinkStack *s) {
return s->next == NULL;
}
void Push(LinkStack *s, ElemType e) {
LinkStack *p = (LinkStack *)malloc(sizeof(LinkStack));
p->data = e;
p->next = s->next;
s->next = p;
}
int Pop(LinkStack *s, ElemType *e) {
if (StackEmpty(s)) {
return 0;
}
LinkStack *p = s->next;
*e = p->data;
s->next = p->next;
free(p);
return 1;
}
int GetTop(LinkStack *s, ElemType *e) {
if (StackEmpty(s)) {
return 0;
}
*e = s->next->data;
return 1;
}
void DestroyStack(LinkStack **s) {
while ((*s)->next != NULL) {
LinkStack *p = (*s)->next;
(*s)->next = p->next;
free(p);
}
free(*s);
*s = NULL;
}
int main() {
LinkStack *s;
InitStack(&s);
Push(s, 1);
Push(s, 2);
Push(s, 3);
ElemType e;
Pop(s, &e);
printf("%d\n", e);
GetTop(s, &e);
printf("%d\n", e);
DestroyStack(&s);
return 0;
}
```