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

链栈的初始化,建立,插入,查找,删除。

--

代码

////
//链栈的初始化,建立,插入,查找,删除。  //
//Author:Wang Yong                            //    
//Date:    2010.8.19                            //
////


#include <stdio.h>
#include <stdlib.h>

typedef int ElemType;

///

//定义链栈的结构类型

typedef struct StackNode 
{
    ElemType data;                //栈的数据 
    struct StackNode *next;        //指针域 
} StackNode,*LinkStack;

//

//链栈的初始化

LinkStack LinkStackInit()
{
    LinkStack top;                    //构造一个空栈 
    top = (StackNode *)malloc(sizeof(StackNode));
    if(!top)
        printf("OVERFLOW\n");
    top = NULL;
    return top; 
}

/////

//判断栈空的算法

int LinkStackEmpty(LinkStack top)
{
    if(!top)
        return 1;
    else 
        return 0;
}

////

//进栈的算法

LinkStack LinkStackPush(LinkStack top,ElemType x)
{
    LinkStack p;
    p = (StackNode *)malloc(sizeof(StackNode));    //创建一个结点 
    p->data = x;                                //设置结点的数据域 
    p->next = top;                                 //设置结点的指针域
    top = p;                                    //设置新的栈顶 
    return top;
}

////

//出栈的算法

ElemType LinkStackPop(LinkStack &top)//出栈的时候必须判断是否栈空 
{
    LinkStack p;
    ElemType x;
        
    if(top != NULL)
    {
        x = top->data;                        //取栈顶元素 
        p = top;                            //将栈顶结点重置 
        top = top->next;
        free(p);                            //释放原栈顶结点空间 
    }
    else
        printf("stack empty!\n");
    return  x;
} 
int main()
{
    LinkStack lstack;
    lstack = LinkStackInit();
    ElemType x;
    printf("请输入进栈的元素:");
    while(scanf("%d",&x) != EOF)
    {
        lstack = LinkStackPush(lstack,x); 
    }
    LinkStack p;
    for(p = lstack;p != NULL; p = p->next)
        printf("%d ",p->data);
    printf("出栈的结果为:");
    while(lstack != NULL)
        printf("%d ",LinkStackPop(lstack));
    return 0;
}

 

 

 

 

 

 

 

 

 

 

--

转载于:https://www.cnblogs.com/Ph-one/p/6889845.html

相关文章:

  • 顺序串的初始化,建立,插入,查找,删除。
  • quick check
  • http://blog.csdn.net/renfufei/article/details/37725057/
  • github 博客模板
  • 好用的Markdown编辑器一览
  • 复旦大学考研科目
  • 51单片机GPIO口模拟串口通信
  • 第一部分软件工程基础[专业课考试1]
  • 第二部分计算机系统基础[专业课考试2]
  • 第三部分数据结构[专业课考试3]
  • 深入理解SP、LR和PC
  • 数据结构ADT是什么
  • 带哨兵节点和不带哨兵节点的单链表操作的对比
  • ACM
  • 可信执行环境(TEE)介绍 与应用
  • 2017 年终总结 —— 在路上
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • css选择器
  • Debian下无root权限使用Python访问Oracle
  • Docker容器管理
  • Intervention/image 图片处理扩展包的安装和使用
  • mongodb--安装和初步使用教程
  • MySQL数据库运维之数据恢复
  • rabbitmq延迟消息示例
  • Vue2 SSR 的优化之旅
  • 爱情 北京女病人
  • 动态规划入门(以爬楼梯为例)
  • 机器学习学习笔记一
  • 前端临床手札——文件上传
  • 软件开发学习的5大技巧,你知道吗?
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 大数据全解:定义、价值及挑战
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Linux(Source Insight安装及工程建立)
  • #QT项目实战(天气预报)
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (2)STM32单片机上位机
  • (5)STL算法之复制
  • (LeetCode 49)Anagrams
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (七)Java对象在Hibernate持久化层的状态
  • (四)Linux Shell编程——输入输出重定向
  • (原)Matlab的svmtrain和svmclassify
  • (转) RFS+AutoItLibrary测试web对话框
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net Winform开发笔记(一)
  • .NET处理HTTP请求
  • .net快速开发框架源码分享
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .net专家(高海东的专栏)
  • @31省区市高考时间表来了,祝考试成功
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @Transaction注解失效的几种场景(附有示例代码)