2026/2/8 2:52:31
网站建设
项目流程
茂名优化网站建设,网络营销方案设计题,卖服装设计稿的平台,120平米装修实用图一、栈的基本概念①栈的定义②栈的基本操作③常考题型④小结二、栈的顺序存储实现①顺序栈的定义②初始化操作③进栈操作④出栈操作⑤读栈顶元素操作⑥共享栈⑦小结三、栈的链式存储实现①链栈的定义②小结#include stdio.h
#include stdlib.h// 链栈的结点结构…一、栈的基本概念①栈的定义②栈的基本操作③常考题型④小结二、栈的顺序存储实现①顺序栈的定义②初始化操作③进栈操作④出栈操作⑤读栈顶元素操作⑥共享栈⑦小结三、栈的链式存储实现①链栈的定义②小结#include stdio.h #include stdlib.h // 链栈的结点结构 typedef struct LinkNode { int data; // 数据域 struct LinkNode *next; // 指针域 } LinkNode; // 链栈结构不带头结点栈顶指针直接指向栈顶元素 typedef struct { LinkNode *top; // 栈顶指针 } LinkStack; // 1. 初始化链栈 void InitStack(LinkStack S) { S.top NULL; // 空栈时栈顶指针为NULL } // 2. 判断栈是否为空 bool StackEmpty(LinkStack S) { return S.top NULL; } // 3. 进栈操作增 bool Push(LinkStack S, int x) { // 生成新结点 LinkNode *p (LinkNode *)malloc(sizeof(LinkNode)); if (p NULL) return false; // 内存分配失败 p-data x; p-next S.top; // 新结点的next指向原栈顶 S.top p; // 更新栈顶指针 return true; } // 4. 出栈操作删 bool Pop(LinkStack S, int x) { if (StackEmpty(S)) return false; // 栈空出栈失败 LinkNode *p S.top; // 指向栈顶结点 x p-data; // 获取栈顶元素 S.top S.top-next; // 栈顶指针下移 free(p); // 释放原栈顶结点 return true; } // 5. 获取栈顶元素查 bool GetTop(LinkStack S, int x) { if (StackEmpty(S)) return false; // 栈空获取失败 x S.top-data; return true; } // 测试函数 int main() { LinkStack S; InitStack(S); // 进栈 Push(S, 1); Push(S, 2); Push(S, 3); // 获取栈顶 int topVal; if (GetTop(S, topVal)) { printf(栈顶元素%d\n, topVal); } // 出栈 int popVal; while (Pop(S, popVal)) { printf(出栈元素%d\n, popVal); } // 判空 if (StackEmpty(S)) { printf(栈已为空\n); } return 0; }四、队列的基本概念①队列的定义②队列的基本操作③小结五、队列的顺序实现①初始化操作②入队操作③循环队列④循环队列——入队操作⑤循环队列——出队操作⑥判断队列已满/已空⑦小结六、队列的链式实现①初始化带头结点②初始化不带头结点③入队带头结点④入队不带头结点⑤出队带头结点⑥出队不带头结点⑦队列满的条件⑧小结七、双端队列