我是靠谱客的博主 甜美老师,最近开发中收集的这篇文章主要介绍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<stdio.h>

#include<stdlib.h>

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

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)

最后

以上就是甜美老师为你收集整理的LINUX多文件实现栈(C语言)附带Makefile的全部内容,希望文章能够帮你解决LINUX多文件实现栈(C语言)附带Makefile所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部