美文网首页
3.指针实现简单的栈操作

3.指针实现简单的栈操作

作者: 陈忠俊 | 来源:发表于2020-02-26 15:24 被阅读0次
#include<stdio.h>
#include<stdlib.h>

#定义栈结构
typedef struct stack {
    int *data;
    int *pointer;
    int capacity;
}mystack;
#初始化栈
void init_stack(mystack *stack, int capacity){
    stack->data = (int *)malloc(capacity * sizeof(int));
    stack->pointer = stack->data;
    stack->capacity = capacity;
}
#释放分配的内存
void free_stack(mystack *stack){
    free(stack->data);
    stack->capacity = 0;
}
#栈是否是满的
int full_stack(mystack *stack){
    return stack->pointer - stack->data >= stack->capacity;
}
#栈是否是空
int empty_stack(mystack *stack){
    return stack->data - stack->pointer > 0;
}
#推入数据
void push_stack(mystack *stack, int data){
    if(!full_stack(stack))
        *(stack->pointer++) = data;
}
#弹出数据
int pop_stack(mystack *stack){
    if(!empty_stack(stack))
        return *(--stack->pointer);
}
#获取当前的容量
int getsize_stack(mystack *stack){
    if(!empty_stack(stack)){
        return stack->pointer - stack->data;
    }
}

int main(void){
    mystack stack;
    int capacity = 5;
    init_stack(&stack, capacity);
    int num = 100;
    int i;
    for(i = 0; i < capacity; i++){
        push_stack(&stack, num + i);
    }
    printf("%d\n", getsize_stack(&stack));
    for(i = 0; i < capacity; i++){
        printf("%d\n", pop_stack(&stack));
    }
    printf("%d\n", empty_stack(&stack));
    free_stack(&stack);
    return 0;
}

输出如下:

5
104
103
102
101
100
0

相关文章

  • 3.指针实现简单的栈操作

    输出如下:

  • 5.栈Stack

    目录:1.栈的定义2.栈的图解3.栈定义操作4.栈的实现 1. 栈的定义 2. 栈的图解 3. "栈"定义的操作 ...

  • 3. 栈的操作

    1. 栈的操作-c语言实现2. 栈操作的实现-顺序栈和链栈 3. 栈的实现与遍历4. c语言的函数调用栈5. 两个...

  • LeetCode 每日一题 [12] 用队列实现栈

    LeetCode 用队列实现栈 [简单] 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈pop(...

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 1.4 对象的访问定位

    Java程序需要通过栈中的 reference 数据操作堆上的数据,目前主流实现有 句柄池 跟 直接指针两种。 句...

  • 链栈及简单实现

    链栈 用带有头节点的单链表实现的栈。用头节点当栈顶指针。 当top.Next==null时,栈空。 实现 Node...

  • 栈的Java实现

    利用数组实现栈的操作,栈的操作是先进后出。

  • 数据结构实验1.4:栈和队列

    实验内容 : 1.采用链式存储实现栈的初始化、入栈、出栈操作。2.采用顺序存储实现栈的初始化、入栈、出栈操作。3....

  • 作业帮做-栈结构验证

    顺序栈操作验证 实验目的 掌握栈的顺序存储结构; 验证栈的操作特性; 掌握顺序栈的基本操作实现方法。 实验内容 建...

网友评论

      本文标题:3.指针实现简单的栈操作

      本文链接:https://www.haomeiwen.com/subject/uhnvchtx.html