当前位置: 首页 > news >正文

丹阳网站设计建设银行河北招聘网站

丹阳网站设计,建设银行河北招聘网站,广州注册公司在哪个网站,福州品牌网站设计文章目录 链式存储结构顺序存储结构 下面这篇文章是我大二时候写的比较详细的实现过程#xff0c;再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。 链式存储结构与顺序存储结构详解 这里我就不使用C再一次实现这两个栈了#xff0c;有兴趣的也可… 文章目录 链式存储结构顺序存储结构 下面这篇文章是我大二时候写的比较详细的实现过程再这篇文章我也会再一次比较简单的再次简述一下链式与顺序存储结构的实现方式。 链式存储结构与顺序存储结构详解 这里我就不使用C再一次实现这两个栈了有兴趣的也可以使用C的STL库中的stack直接实现。 实现思路如下 首先我们定义了一个节点结构Node每个节点包含一个整数数据和指向下一个节点的指针。 然后我们定义了栈结构Stack其中包括一个指向栈顶节点的指针top和一个表示栈大小的整数size。 初始化栈时将top指针设置为NULL表示栈为空同时将size设置为0。 入栈操作(push)创建一个新节点将数据存储在新节点中然后将新节点插入到栈顶并更新top和size。 出栈操作(pop)从栈顶移除一个节点返回其数据并释放节点内存同时更新top和size。 查看栈顶元素操作(peek)返回栈顶节点的数据不修改栈的状态。 打印栈中元素操作(printStack)遍历栈中的节点打印每个节点的数据。 主函数中使用一个循环来接收用户输入的选项然后调用相应的栈操作以实现增删改查功能。 链式存储结构 #include stdio.h #include stdlib.h// 定义节点结构 typedef struct Node {int data;struct Node *next; } Node;// 定义栈结构 typedef struct Stack {Node *top;int size; } Stack;// 初始化栈 void initStack(Stack *stack) {stack-top NULL;stack-size 0; }// 入栈操作 void push(Stack *stack, int data) {Node *newNode (Node *)malloc(sizeof(Node));if (newNode NULL) {printf(内存分配失败\n);exit(1);}newNode-data data;newNode-next stack-top;stack-top newNode;stack-size; }// 出栈操作 int pop(Stack *stack) {if (stack-top NULL) {printf(栈为空\n);return -1; // 返回一个特殊值表示栈为空}Node *temp stack-top;int data temp-data;stack-top temp-next;free(temp);stack-size--;return data; }// 查看栈顶元素 int peek(Stack *stack) {if (stack-top NULL) {printf(栈为空\n);return -1; // 返回一个特殊值表示栈为空}return stack-top-data; }// 打印栈中的元素 void printStack(Stack *stack) {Node *current stack-top;printf(栈中的元素: );while (current ! NULL) {printf(%d , current-data);current current-next;}printf(\n); }int main() {Stack stack;initStack(stack);int choice, data;while (1) {printf(1. 入栈 2. 出栈 3. 查看栈顶元素 4. 打印栈 5. 退出\n);printf(请输入选项: );scanf(%d, choice);switch (choice) {case 1:printf(请输入要入栈的数据: );scanf(%d, data);push(stack, data);break;case 2:data pop(stack);if (data ! -1)printf(出栈的元素是: %d\n, data);break;case 3:data peek(stack);if (data ! -1)printf(栈顶元素是: %d\n, data);break;case 4:printStack(stack);break;case 5:exit(0);default:printf(无效选项\n);}}return 0; } 顺序存储结构 实现思路如下 首先我们定义了一个栈结构Stack其中包括一个指向整数数组的指针array栈的容量capacity栈顶索引top和当前栈中的元素个数size。 初始化栈时分配内存并初始化Stack结构的字段包括分配内存给array数组将top初始化为-1表示栈为空将size初始化为0。 入栈操作(push)检查栈是否已满如果没有满将数据存储在数组中并更新top和size。 出栈操作(pop)检查栈是否为空如果不为空从数组中取出元素更新top和size并返回出栈的元素。 查看栈顶元素操作(peek)检查栈是否为空如果不为空返回栈顶元素。 打印栈中元素操作(printStack)遍历数组中的元素打印每个元素。 主函数中使用一个循环来接收用户输入的选项然后调用相应的栈操作以实现增删改查功能。 #include stdio.h #include stdlib.h// 定义栈结构 typedef struct Stack {int *array; // 用于存储栈元素的数组int capacity; // 栈的容量int top; // 栈顶索引int size; // 当前栈中的元素个数 } Stack;// 初始化栈 Stack* initStack(int capacity) {Stack *stack (Stack *)malloc(sizeof(Stack));if (stack NULL) {printf(内存分配失败\n);exit(1);}stack-capacity capacity;stack-array (int *)malloc(sizeof(int) * capacity);if (stack-array NULL) {printf(内存分配失败\n);exit(1);}stack-top -1; // 初始化栈顶索引为-1表示栈为空stack-size 0; // 初始化栈中元素个数为0return stack; }// 入栈操作 void push(Stack *stack, int data) {if (stack-size stack-capacity) {printf(栈已满\n);return;}stack-array[stack-top] data;stack-size; }// 出栈操作 int pop(Stack *stack) {if (stack-size 0) {printf(栈为空\n);return -1; // 返回一个特殊值表示栈为空}int data stack-array[stack-top--];stack-size--;return data; }// 查看栈顶元素 int peek(Stack *stack) {if (stack-size 0) {printf(栈为空\n);return -1; // 返回一个特殊值表示栈为空}return stack-array[stack-top]; }// 打印栈中的元素 void printStack(Stack *stack) {if (stack-size 0) {printf(栈为空\n);return;}printf(栈中的元素: );for (int i 0; i stack-top; i) {printf(%d , stack-array[i]);}printf(\n); }int main() {int capacity;printf(请输入栈的容量: );scanf(%d, capacity);Stack *stack initStack(capacity);int choice, data;while (1) {printf(1. 入栈 2. 出栈 3. 查看栈顶元素 4. 打印栈 5. 退出\n);printf(请输入选项: );scanf(%d, choice);switch (choice) {case 1:printf(请输入要入栈的数据: );scanf(%d, data);push(stack, data);break;case 2:data pop(stack);if (data ! -1)printf(出栈的元素是: %d\n, data);break;case 3:data peek(stack);if (data ! -1)printf(栈顶元素是: %d\n, data);break;case 4:printStack(stack);break;case 5:free(stack-array);free(stack);exit(0);default:printf(无效选项\n);}}return 0; } 下面是使用C的stack库实现的栈这个相当于没有实现任何功能考研可不推荐这样子玩当然如果考察的重点不是栈而是使用栈解决某个问题那么可以使用stack #include iostream #include stackusing namespace std;int main() {stackint myStack;while (true) {int choice, data;cout 1. 入栈 2. 出栈 3. 查看栈顶元素 4. 打印栈 5. 退出 endl;cout 请输入选项: ;cin choice;switch (choice) {case 1:cout 请输入要入栈的数据: ;cin data;myStack.push(data);break;case 2:if (!myStack.empty()) {cout 出栈的元素是: myStack.top() endl;myStack.pop();} else {cout 栈为空 endl;}break;case 3:if (!myStack.empty()) {cout 栈顶元素是: myStack.top() endl;} else {cout 栈为空 endl;}break;case 4:if (!myStack.empty()) {cout 栈中的元素: ;stackint tempStack myStack;while (!tempStack.empty()) {cout tempStack.top() ;tempStack.pop();}cout endl;} else {cout 栈为空 endl;}break;case 5:return 0;default:cout 无效选项 endl;}}return 0; }
http://www.hkea.cn/news/14532018/

相关文章:

  • 如何做公司网站wordpress ftp设置
  • 个人备案网站做淘宝客可以用吗企业网站建设申请怎么写
  • 请问下网站开发怎么弄没有icp备案的ip地址访问的网站会被各搜索引擎收录吗
  • 兼职网站高中生在家可做传奇怎么做网站
  • 网站开发手册网站模块功能
  • php wordpress 配置成都排名seo公司
  • 内网建站教程wordpress会员等级
  • 东莞网站公司建设网站中国防疫政策马上要变化了
  • 上海市虹口市容建设公司网站迁安网站建设
  • 网页设计与网站建设pdf环保主题的网站模板
  • 嘉定网站网站建设做网站运营公司收费
  • 个人网站模板下载自己做的公司网站百度搜不到
  • 360网站怎么做链接做网站需要什么框架
  • 单页营销型网站建设wordpress下载类模板下载
  • 做电影ppt模板下载网站网站和网页的设计原则
  • 表单大师做网站网站开发报价单明细
  • 做一个谷歌网站多少钱金蝶官网首页
  • js特效演示网站wordpress开启2级域名
  • 昆明著名网站建设信息技术制作网站
  • 网站引导页作用网络应用程序方案设计
  • 网站备案是域名还是空间西宁市城中区建设局网站
  • 网站建设有什么服务Wordpress建站用什么系统
  • 电商网站排名在 wordpress 本地安装 wordpress
  • 专业广州做网站公司网站 页面 结构
  • 网站建设 试题厦门零基础学seo
  • 企业网站有哪些内容男女直接做免费的网站
  • python怎么搭建网站婚庆手机版网站建设
  • 江苏省住房和城乡建设局网站IP网站登记
  • 汕头企业网站建设设计tklink的登录做网站
  • 现在可以做网站么额敏网站建设