栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

LINUX多文件实现栈(C语言)附带Makefile

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LINUX多文件实现栈(C语言)附带Makefile

//主函数代码

#include"stack.h"

int main()

{

    //定义栈变量

    stack_t stack;

    //初始化,最大容量为10

    stack_init(&stack,10);

    int data = 11;

    //入栈

    while(!stack_full(&stack))

    {

        stack_push(&stack,data++);

    }

    printf("有效个数%d",stack_size(&stack));

    //出栈

    while(!stack_empty(&stack))

    {

        printf("%d",stack_pop(&stack));

    }

    printf("有效个数%d",stack_size(&stack));

    //释放内存

    stack_deinit(&stack);

    return 0;

}

//头文件代码

#ifndef __STACK_H

#define __STACK_H

#include

#include

//声明描述栈信息的结构体类型

typedef struct stack

{

    int *arr;//保存内存首地址

    int top;//栈顶位置

    int cap;//元素个数

}stack_t;

extern void stack_init(stack_t *stack,int cap);//初始化栈

extern void stack_deinit(stack_t *stack);//释放栈的内存

extern int stack_full(stack_t *stack);//判断栈是否满

extern int stack_empty(stack_t *stack);//判断栈是否空

extern void stack_push(stack_t *stack,int data);//压栈

extern int stack_pop(stack_t *stack);//弹栈

extern int stack_size(stack_t *stack);//获取栈中有效数据个数

#endif

//函数实现代码

#include"stack.h"

//定义栈的初始化函数

void stack_init(stack_t *stack,int cap)

{   

    //给栈分配内存

    stack->arr = malloc(sizeof(int)*cap);

    //初始化容量

    stack->cap =cap;

    //初始化栈顶

    stack->top = 0;

}

//定义栈内存释放

void stack_deinit(stack_t *stack)

{

    free(stack->arr);

    stack->cap = 0;

    stack->top = 0;

}

//判断栈是否满

int stack_full(stack_t *stack)

{

    return stack->top >= stack->cap;//满返回1,不满返回0

}

//判断栈是否为空

int stack_empty(stack_t *stack)

{

    return !stack->top;//返回1为空

}

//压栈

void stack_push(stack_t *stack,int data)

{

    stack->arr[stack->top] = data;

    stack->top++;

}

//出栈

int stack_pop(stack_t *stack)

{

    stack->top--;

    return stack->arr[stack->top];

}

//有效数据个数

int stack_size(stack_t *stack)

{

    return stack->top;

}

Make file文件内容:注意回车和tab

BIN=stack

OBJ=main.o stack.o

CC=gcc

$(BIN):$(OBJ)

$(CC) -o $(BIN) $(OBJ)

%.o:%.c

$(CC) -c -o $@ $<

clean:

rm $(BIN) $(OBJ)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/914743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号