1 链表实现栈的示意图
使用双向带头循环链表来表示栈,表头和表尾均可表示为栈顶,这里以表头为栈顶为例。
进行入栈操作(头插):
进行出栈操作(头删):
2 链表实现栈
2.1 头文件及其定义
#include<stdio.h>
#include<stdlib.h>
typedef int STDataType;
typedef struct LstkNode {
STDataType data;
struct ListNode* prev;
struct ListNode* next;
}ListNode;
typedef struct Stack {
ListNode* head;
ListNode* top;
} Stack;
2.2 创建新的节点
//创建新的节点
ListNode* createListnode(STDataType val) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->data = val;
node->prev = node->next = NULL;
}
2.3 打印节点的值
//打印节点的值
void printListNode(ListNode* node) {
printf("%d\n", node->data);
}
2.4 栈的初始化
//初始化栈
void