剑指offer--2

简介: 前言:继续笔记分享! 面试题6:暂无好的解决方法先搁浅一下 面试题7: #include #include typedef struct LIFO{ int *data; int maxlen; int top; }seqstack_t; ty...

前言:继续笔记分享!

面试题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("栈空\n");
            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("\n");

    free(T->data);
    free(T);
    free(T1->data);
    free(T1);
    return 0;
}

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

 

作者: 柳德维

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ⁾⁾!

目录
相关文章
|
7月前
力扣370周赛 -- 第三题(树形DP)
力扣370周赛 -- 第三题(树形DP)
|
机器学习/深度学习 算法
算法刷题第五天:双指针--4
链表的缺点在于不能通过下标访问对应的元素。因此我们可以考虑对链表进行遍历,同时将遍历到的元素依次放入数组A中。如果我们遍历到了N个素,那么链表以及数组的长度也为N,对应的中间节点即为A[N/2] 。
103 1
算法刷题第五天:双指针--4
|
机器学习/深度学习 算法 JavaScript
算法刷题第四天:双指针--3
算法刷题第四天:双指针--3
88 0
算法刷题第四天:双指针--3
【蓝桥杯】考前押题--并查集
🎉考前冲刺🎉 🎠1、合根植物 🎏2、亲戚 🧵3、七段码
【蓝桥杯】考前押题--并查集
|
人工智能 算法 程序员
蓝桥杯第十一讲--双指针【例/习题】
蓝桥杯第十一讲--双指针【例/习题】
160 0
蓝桥杯第十一讲--双指针【例/习题】
|
索引
LeetCode每日一题——707. 设计链表
设计链表的实现。您可以选择使用单链表或双链表。
108 0
|
算法 数据处理
算法刷题力扣(算法--二分查找)(跑路人笔记)
算法刷题力扣(算法--二分查找)(跑路人笔记)
算法刷题力扣(算法--二分查找)(跑路人笔记)
LeetCode每日一刷 --- 手撕单链表习题(2)
目录 1、链表的回文结构 2、相交链表 3、复制带随机指针的链表
LeetCode每日一刷 --- 手撕单链表习题(2)
LeetCode每日一刷 --- 手撕单链表习题(1)
目录 1、移除链表元素 2、反转链表 3、链表的中间节点 4、链表中倒数第k个节点 5、合并两个有序链表 6、链表分割
LeetCode每日一刷 --- 手撕单链表习题(1)