#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define elemType char
typedef struct linkStack {
elemType data;
struct linkStack* next;
}linkStack;
bool initStack(linkStack** head,elemType num) {
*head = (linkStack*)malloc(sizeof(linkStack));
if (*head == NULL) {
return false;
}
(*head)->data = num;
(*head)->next = NULL;
return true;
}
bool destroyStack(linkStack** head) {
linkStack* dele = *head;
linkStack* deleNext = NULL;
while (dele) {
deleNext = dele->next;
free(dele);
dele = deleNext;
}
*head = NULL;
return true;
}
bool pushStack(linkStack** head, elemType num) {
linkStack* pNode = (linkStack*)malloc(sizeof(linkStack));
if (pNode == NULL) {
return false;
}
pNode->data = num;
pNode->next = *head;
*head = pNode;
return true;
}
bool popStack(linkStack** head, elemType* num) {
if (head == NULL) {
return false;
}
*num = (*head)->data;
(*head) = (*head)->next;
return true;
}
bool getTopStack(linkStack* head, elemType* num) {
if (head == NULL) {
return false;
}
*num = head->data;
return true;
}
int main() {
linkStack* stack;
initStack(&stack, 'a');
pushStack(&stack, 'b');
char a;
popStack(&stack, &a);
getTopStack(stack, &a);
printf("栈顶元素是%c\n", a);
destroyStack(&stack);
return 0;
}