概述
//主函数代码
#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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复