• 几种对栈操作的方法


    */
     * Copyright (c) 2016,烟台大学计算机与控制工程学院
     * All rights reserved.
     * 文件名:text.html
     * 作者:常轩
     * 微信公众号:Worldhello
     * 完成日期:2016年12月3日
     * 版本号:V1.0
     * 程序输入:无
     * 程序输出:见运行结果
     */
    
    #include<stdio.h>
    //链栈  注意:要充分理解引用这一概念和链表的操作
    typedef struct linknode            //定义栈
    {
    	ElemType data;                 //数据域
    	struct linknode * next;        //指针域
    }LiStack;                          //定义链栈类型
    
    void initStack(LiStack * &s)       //初始化栈
    {
    	s=(LiStack *)malloc(sizeof(LiStack));
    	s->data=NULL;
    }
    
    void destroyStack(LiStack * &s)   //销毁栈
    {
    	LiStack * p=s,* q=s->next;
    	while(q!=NULL)
    	{
    		free(p);
    		p=q;
    		q=p->next;
    	}
    	free(p);                      //此时p指向尾节点,释放其空间
    }
    
    
    bool stackEmpty(LiStack *s)       //判断栈是否为空
    {
    	return(s->next==NULL);
    }
    
    void Push(LiStack * &s,ElemType e) //进栈  (参照创建单链表的头插法)
    {
    	LiStack * p;
    	p=(LiStack *)malloc(sizeof(LiStack));
    	p->data=e;
    	p->next=s->next;
    	s->next=p;
    }
    
    bool Pop(LiStack * &s,ElemType &e) //出栈 在栈不为空的情况下将头指针域所指的数据域赋给e,然后将该数据节点删除
    {
    	LiStack * p;
    	if(s->next==NULL)
    		return false;
    	p=s->next;
    	e=p->data;
    	s->next=p->next;
    	free(p);
    	return true;
    }
    
    bool GetTop(LiStack * s,ElemType &e)
    {
    	if(s->next==NULL)
    		return false;
    	e=s->data;
    	return true;
    }
    
    
    
    

  • 相关阅读:
    OC2-xml文件解析
    python3+selenium入门06-浏览器操作
    python3+selenium入门05-元素操作及常用方法
    Git学习笔记05-撤销修改
    Git学习笔记04-管理修改
    Git学习笔记03-工作区和暂存区
    Git学习笔记02-创建版本库
    Git学习笔记01-安装Git
    Python3学习笔记30-datetime模块
    python3+requests库框架设计08-发送邮件
  • 原文地址:https://www.cnblogs.com/chxuan/p/8232121.html
Copyright © 2020-2023  润新知