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

东山县城乡规划建设局网站个人网站图片

东山县城乡规划建设局网站,个人网站图片,做网站是什么课,福州云建站栈#xff1a; 线性的集合。后进先出#xff08;LIFO#xff0c;last in first out#xff09;。两个指针#xff1a;指向栈顶和栈底。栈顶指向最后进入且第一个出去的元素。栈底指向第一个进入且最后一个出去的元素。两个操作#xff1a;入栈#xff08;往栈尾添加元素…栈 线性的集合。后进先出LIFOlast in first out。两个指针指向栈顶和栈底。栈顶指向最后进入且第一个出去的元素。栈底指向第一个进入且最后一个出去的元素。两个操作入栈往栈尾添加元素出栈从栈尾取出元素。可以使用链表实现也可以使用数组实现。本文使用双链表举例。 入栈往栈顶栈尾部添加元素。 头指针指向第一个元素。尾指针指向最后的元素。 出栈从栈顶栈尾部删除元素。 头指针指向第一个元素。尾指针指向最后的元素。 C语言实现双链表 创建节点结构体数据类型并创建具体节点实例的函数 // 节点结构体数据类型 typedef struct Node {int value; // 存储数据为整数struct Node *next; // 指向下一个数据的指针struct Node *prev; // 指向上一个数据的指针 } LinkNode; // 别名LinkNode // 创建具体节点实例的函数 LinkNode * createNode(int data) {LinkNode *node (LinkNode *)malloc(sizeof(LinkNode)); // 分配内存空间if(node NULL){perror(Memory allocation failed);exit(-1);}node-value data;node-prev NULL;node-next NULL;return node; } 本文将头指针、尾指针和栈长度作为全局变量 LinkNode *header NULL; // 头指针,指向第一个节点,初始化为NULL LinkNode *tail NULL; // 尾指针,指向最后节点,初始化为NULL int length 0; // 统计栈有多少元素,初始化为0 入栈 // 入栈往栈顶即尾部添加数据 void push(int data) {LinkNode *node createNode(data);if(length 0) // 空栈头指针和尾指针都指向新节点{header node;tail node;length;return ;}tail-next node; // 原最后节点的下一个为新节点node-prev tail; // 新节点的上一个为原最后节点tail node; // 尾指针指向新节点即新节点为最后节点 length; // 每添加一个元素length1 } 获取栈顶元素 int gettop(void) {// 栈不为空则栈顶元素为尾指针指向的最后节点的值if(length ! 0) return tail-value; } 出栈 int pop(void) {if(length ! 0){// 获取最后节点的值int top tail-value;// 通过最后节点的prev找到倒数第二个节点,其next指向NULL,则原倒数第二个节点为新的最后节点tail-prev-next NULL;// 每删除一个节点,length-1length--;// 返回原最后节点的值return top;} } 遍历栈 void travel(void) {if(length 0) return ;LinkNode *cur header; // 从链表头部开始遍历直到最后printf(stack elements:);while(cur ! NULL){printf(%d \t, cur-value);cur cur-next;}printf(\n); } 完整代码stack.c #include stdio.h #include stdlib.h #include ctype.h/* structrue */ typedef struct Node // node structure {int value;struct Node *next;struct Node *prev; } LinkNode;/* global variables */ LinkNode *header NULL; // the header pointer LinkNode *tail NULL; // the tailer pointer int length 0; // the number of the stack elements/* function prototype */ void push(int data); // add element to the end of the stack int pop(void); // delete element from the end of the stack int gettop(void); // show element at the end of the stack void travel(void); // show element one by one/* main function */ int main(void) {// cycle input a number until q or non-numeric, add the number to the stackwhile(1) // 循环输入数字,并入栈,输入q退出输入循环{int data 0, c;printf(if quit,input q. Input a number: );c getchar(); // 获取输入的一个字符if(tolower(c) q) break; // 若输入q,则退出输入循环if(c 0 || c 9) break; // 输入的不是数字,则退出输入循环while(c ! \n) // 若整数为多位数,通过一位一位计算最终获得多位整数{data * 10;data c - 48; // ASCII码表中0对应码值48c getchar();}push(data); // 入栈printf(length is %d \n, length); // 输出栈元素个数travel(); // 遍历栈}// when stack not empty,cycle look and delete the top element until input nif(length 0) exit(-1);char k;printf(if you want to look and delete the top element? (y/n) );scanf( %c, k); // 获取输入的内容while(tolower(k) y length ! 0) // 循环输入是否查看并删除栈顶元素{printf(top element is %d \n, gettop()); // 输出栈顶元素pop(); // 出栈printf(length is %d \n, length); // 输出栈元素个数travel(); // 遍历栈printf(if you want to look and delete the top element? (y/n) );scanf( %c, k); // 获取下一个输入的内容} }/* subfunction */ LinkNode * createNode(int data) // create a node {LinkNode *node (LinkNode *)malloc(sizeof(LinkNode));if(node NULL){perror(Memory allocation failed);exit(-1);}node-value data;node-prev NULL;node-next NULL;return node; }void push(int data) // add element to the end of the stack {LinkNode *node createNode(data);if(length 0){header node;tail node;length;return ;}tail-next node;node-prev tail;tail node;length; }int pop(void) // delete element from the end of the stack {if(length ! 0){int top tail-value;tail-prev-next NULL;length--;return top;} }int gettop(void) // show element at the end of the stack {if(length ! 0) return tail-value; }void travel(void) // show element one by one {if(length 0) return ;LinkNode *cur header;printf(stack elements:);while(cur ! NULL){printf(%d \t, cur-value);cur cur-next;}printf(\n); } 编译链接 gcc -o stack stack.c 执行可执行文件 ./stack
http://www.w-s-a.com/news/709558/

相关文章:

  • 网页游戏网站搭建免费建网站哪个模板多
  • 公司起名打分最准的免费网站直播网站app开发
  • 医疗器械类网站前置审批网站临时域名
  • 金融网站策划方案网站开发表格整体页面居中
  • 句容本地网站黄石下陆区建设局网站
  • 免费网站服务陕西省咸阳市建设银行网站
  • 网站建设活动计划做网站意义
  • 莱芜新闻主持人名单seo sem 外贸建站 网站建设 文化墙设计
  • 易语言可以做网站嘛赣州网站建设开发
  • 网站建设规范布局网站建设费往什么科目
  • 乐清手机网站设计哪个汽车网站汽贸店免费做
  • 网站建设课程总结报告推广软文
  • 企业网站哪里可以做烟台seo网站推广
  • 怎样建设网站优化珠海网站建设开发
  • 泰兴住房和城乡建设厅网站福州app开发
  • 免费制作公司网站seo前线
  • 导购网站怎么推广有网站源码怎么搭建网站
  • 网站开发问题杭州制作公司网站
  • 网站推广seo是什么wordpress 去除顶部
  • 建筑学不会画画影响大吗电子商务沙盘seo关键词
  • 重庆网站建设找承越上海建设工程招投标网
  • 网站建设四个步骤下单的网站建设教程
  • 网站建设合同的验收表响应式网站建设哪家好
  • 手机网站建设视频长沙百家号seo
  • 网站未备案怎么访问网站开发前端需要学什么
  • 正黄集团博弘建设官方网站wordpress设置固定链接和伪静态
  • wordpress 建网站视频如何实现网站生成网页
  • 杭州品牌网站建设推广个人的网站建设目标
  • 济南有哪些网站是做家具团购的贸易公司自建免费网站
  • wap网站psd成立公司在什么网站