数据结构 顺序栈和链栈的操作实现(C)

本文分别介绍了顺序栈和链栈的操作实现。对于顺序栈,详细讲解了头文件定义、函数声明及实现,主函数的具体内容。在链式栈部分,同样涵盖了头文件、函数声明和实现,以及主函数的实现细节。
摘要由CSDN通过智能技术生成

顺序栈的操作实现

1、顺序栈的头文件定义和函数声明

#ifndef SEQSTACK_H
#define SEQSTACK_H

//数组模拟栈的存储
#define MAX_SIZE 1024

#define SEQSTACK_TRUE 1
#define SEQSTACK_FALSE 0

typedef struct SEQSTACK
{
   
	void* data[MAX_SIZE];
	int size;
}SeqStack;

// 初始化栈
SeqStack* Init_SeqStack();

// 入栈操作
void Push_SeqStack(SeqStack* stack, void* data);

// 返回栈顶元素
void* Top_SeqStack(SeqStack* stack);

//出栈
void Pop_SeqStack(SeqStack* stack);

// 判断是否为空
int IsEmpty(SeqStack* stack);

//返回栈中元素个数
int Size_SeqStack(SeqStack* stack);

//清空栈
void Clear_SeqStack(SeqStack* stack);

// 销毁栈
void Free_SeqStack(SeqStack* stack);

#endif

2、顺序栈的函数实现

#define _CRT_SECURE_NO_WARNINGS
#include "SeqStack.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 初始化栈
SeqStack* Init_SeqStack()
{
   
	SeqStack* stack = (SeqStack*)malloc(sizeof(SeqStack));
	for (int i = 0; i < MAX_SIZE; i++)
	{
   
		stack->data[i] = NULL;
	}
	stack->size = 0;
	return stack;
}

// 入栈操作
void Push_SeqStack(SeqStack* stack, void* data)
{
   
	if (stack->size == MAX_SIZE)
	{
   
		return;
	}
	if (stack == NULL)
	{
   
		return;
	}
	if (data == NULL)
	{
   
		return;
	}
	stack->data[stack->size] = data;
	stack->size++;
}

// 返回栈顶元素
void* Top_SeqStack(SeqStack* stack)
{
   
	if (
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值