zoukankan      html  css  js  c++  java
  • 剑指offer--2

    前言:继续笔记分享!

    面试题6:暂无好的解决方法先搁浅一下

    面试题7:

    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct LIFO{
        int *data;
        int maxlen;
        int top;
    }seqstack_t;
    typedef struct LIFO1{
        int *data;
        int maxlen;
        int top;
    }seqstack_t1;
    
    //创建一个空栈
    seqstack_t *CreateStack(int max)
    {
        seqstack_t *H;
        H = (seqstack_t *)malloc(sizeof(seqstack_t));
        H->data = (int *)malloc(sizeof(int)*max);
        H->maxlen = max;
        H->top = 0;
        return H;
    }
    //创建一个空栈
    seqstack_t1 *CreateStack1(int max)
    {
        seqstack_t1 *H;
        H = (seqstack_t1 *)malloc(sizeof(seqstack_t1));
    
        H->data = (int *)malloc(sizeof(int)*max);
        H->maxlen = max;
        H->top = 0;
        return H;
    }
    
    //获取栈顶数据的值
    int GetTop(seqstack_t1 *H)
    {
        if(H->top <= 0)
        {
                printf("栈空
    ");
                return -1;
        }
        return H->data[H->top-1];
    }
    
    //栈清空
    void Clear(seqstack_t *H)
    {
        H->top=0;
    }
    
    //向栈中插入数据
    void Push(seqstack_t *H,int m)
    {
        H->data[H->top]=m;
        H->top++;
    }
    //向栈中插入数据
    void Push1(seqstack_t1 *H,int m)
    {
        H->data[H->top]=m;
        H->top++;
    }
    
    int Pop(seqstack_t *H)
    {
        return H->data[H->top];
    }
    
    int main()
    {
        seqstack_t *T=CreateStack(10);
        seqstack_t1 *T1=CreateStack1(10);
        Push(T,1);
        Push(T,2);
        Push(T,3);
        
        int i=0;
        --T->top;
        while(T->top >= 0)
        {                
            Push1(T1,Pop(T));       
            i++;
            --T->top;
          }        
        while(T1->top > 0)
        {
            printf("data:%-5d",GetTop(T1));        
            --T1->top;
          }    
        printf("
    ");
    
        free(T->data);
        free(T);
        free(T1->data);
        free(T1);
        return 0;
    }

    注:主要要懂栈后进先出LIFO,队列先进先出FIFO,一个栈弹出,一个压入,就可以实现队列!!!

  • 相关阅读:
    vue小结
    ES6中的super关键字
    es5和es6
    雅虎工程师提供的CSS初始化示例代码
    移动端rem用法总结
    批量压缩图片
    cordova
    cordova 添加插件时报错相关问题
    JS 数组中对象去重 reduce 用法
    中间件笔录
  • 原文地址:https://www.cnblogs.com/liudw-0215/p/9151108.html
Copyright © 2011-2022 走看看