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

链栈的实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

#include<stdlib.h>

#include<stdio.h>

#include<malloc.h>

typedef int DataType;

typedef struct node{ struct node *next;//指针域 DataType data;//数据域 }Stack;

void initStack(Stack **head);//初始化

int isEmpty(Stack *head);//判非空否

int StackPush(Stack *head,DataType x);//入栈

int StackPop(Stack *head,DataType *x);//出栈

int StackGet(Stack *head,DataType *x);//取栈顶元素

void Destory(Stack *head);//撤销栈

int main(void){ int x,i; Stack *stack; initStack(&stack); for(i=0;i<10;i++) StackPush(stack,i+1); for(i=0;i<10;i++) { StackPop(stack,&x); printf("x=%d\n",x); }

isEmpty(stack);
return 0;

}

void initStack(Stack **head){ *head=(Stack *)malloc(sizeof(Stack));//动态申请 (*head)->next=NULL;//将头指针的next域设为空 }

int StackPush(Stack *head,DataType x){ Stack *p; p=(Stack *)malloc(sizeof(Stack)); p->data=x; p->next=head->next; head->next=p; printf("入栈成功\n"); return 0; }

int isEmpty(Stack *head){ Stack *p=head->next; if(p!=NULL){ printf("栈非空\n"); return 1; } printf("栈空\n"); return 0; }

int StackPop(Stack *head,DataType *x){ Stack *p=head->next; if(p==NULL){ printf("链栈已空\n"); return 0; } head->next=p->next; *x=p->data; free(p); printf("出栈成功\n"); return 1; }

int StackGet(Stack *head,DataType *x){ Stack *p; p=head->next; if(p==NULL){ printf("取栈顶元素为空\n"); return 0; }

*x=p->data;
return 1;

}

void Destory(Stack *head){ Stack *p,*q; p=head; while(p!=NULL){ q=p; p=p->next; free(q); } }

转载于:https://my.oschina.net/u/2511906/blog/1623292

相关文章:

  • mysql字符集乱码
  • JavaWeb项目架构之NFS文件服务器
  • 应该怎么开始学习? study is a journey!
  • 17、文件IO详解及实例
  • TiDB 在 Ping++ 金融聚合支付业务中的实践
  • Apache(httpd)源码包安装
  • 重新认识下数组的concat方法
  • 基于Socket+Zookeeper的简单RPC框架
  • 算法学习之路|升序排序
  • vue:响应原理
  • yum.repos.d中的变量($releasever与$basearch)
  • Activiti6.0 java项目框架 spring5 SSM 工作流引擎 审批流程
  • 造成类在多线程时不安全的原因
  • JavaScript中的图片处理与合成(一)
  • 在 Laravel 中动态隐藏 API 字段
  • [译] React v16.8: 含有Hooks的版本
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CSS魔法堂:Absolute Positioning就这个样
  • Docker: 容器互访的三种方式
  • ES6简单总结(搭配简单的讲解和小案例)
  • HTML-表单
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • java第三方包学习之lombok
  • MySQL主从复制读写分离及奇怪的问题
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Vue学习第二天
  • 高性能JavaScript阅读简记(三)
  • 排序(1):冒泡排序
  • 前端技术周刊 2019-02-11 Serverless
  • 数据科学 第 3 章 11 字符串处理
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 一天一个设计模式之JS实现——适配器模式
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #微信小程序:微信小程序常见的配置传值
  • (003)SlickEdit Unity的补全
  • (12)目标检测_SSD基于pytorch搭建代码
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (实战篇)如何缓存数据
  • (一)appium-desktop定位元素原理
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)程序员技术练级攻略
  • (转)用.Net的File控件上传文件的解决方案
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET CLR基本术语