•   栈的特点是先进后出也就是所谓的FILO,栈这种数据结构在函数中运用很多,在函数调用时,调用函数需要先将本身的数据保存

    到内存空间中,而被函数的参数也需要从内存空间中读取出来,这两个过程就是一个进栈一个出栈,根据物理存储结构栈可以分为:

    1、顺序栈,2、链表栈。

    下面是用c实现的顺序栈

    //堆栈 定义栈空间节点数据类型 
    typedef struct{
        char c;
        int i; 
    }DataStruct;
     
    //定义栈结构 包括栈顶指针,栈地指针
    //关键点:判断栈满的条件:top-bottom>=size;当栈顶指针减去栈底指针大于初始化的栈长度
    //       判断栈空:top总是指向下一个栈空间,如果top==botttom说明栈空。 
    typedef struct{
        DataStruct* top;
        DataStruct* bottom;
        int size;
    } Stack; 
    
    int initStack(Stack* s,int size)
    {
        s->bottom = (DataStruct*)malloc(size*sizeof(DataStruct));
        s->top = s->bottom; //初始化栈空间,此时栈空所以要将top指向bottom同一个位置 
        s->size = size; //保存栈空间大小 
        if(s!=NULL){
            return -1;
        }else{
            return 0;
        }
    }
    //进栈 
    int push(Stack* s,DataStruct data){
        //进栈判断栈满
        //注意指针的加减法:top - bottom 而不是指针的地址相减。
        //另外结构体指针访问结构体内变量的操作语法是 s->top,而基本数据类型指针操作语法是 s.top; 
        if((s->top-s->bottom)>=s->size){
            //可以重新分配空间
            return -1; 
        }
       *s->top = data;   
    s->top++; return 0; } //出栈 int pop(Stack* s,DataStruct* data){ //判断栈空 if(s->top == s->bottom){ printf("栈已空 "); return -1; } s->top--; *data = *s->top;
    return 0; } void main(int argc, char *argv[]) { Stack stack; DataStruct ds = {'c',100}; DataStruct temp; initStack(&stack,100); push(&stack,ds); push(&stack,ds); push(&stack,ds); push(&stack,ds); pop(&stack,&temp); printf("%c,%d ",temp.c,temp.i); pop(&stack,&temp); printf("%c,%d ",temp.c,temp.i); pop(&stack,&temp); printf("%c,%d ",temp.c,temp.i); pop(&stack,&temp); printf("%c,%d ",temp.c,temp.i); pop(&stack,&temp); system("pause"); }
    这个只不过是自己的流水账,偶尔有一些心得,错误的地方概不负责
  • 相关阅读:
    SSIS数据同步实践
    不同实例下同构表数据同步验证
    Performance Analysis of Logs (PAL) Tool
    scrapy框架_3持久化存储
    scrapy框架_2数据解析案例_最新糗事百科案例
    scrapy框架_简单基础命令操作
    Selenium 模块3经典案例_规避检测_js写入破解服务器Selenium识别 模拟登陆12306登陆
    Selenium 模块2_iframe处理_动作链
    Selenium 模块
    Flask_模板
  • 原文地址:https://www.cnblogs.com/ashitaka/p/5915298.html
Copyright © 2020-2023  润新知