这是一个顺序存储的栈的实现文件,包括了栈的创建、释放、清空等功能。

其中,SS_Push函数实现了将元素x进栈的功能,如果栈已满则无法进栈,返回false。

SS_Pop函数实现了出栈的功能,将出栈的元素放入item中,如果栈为空则返回false。

SS_IsFull函数判断栈是否为满,SS_IsEmpty函数判断栈是否为空。

SS_Length函数获取栈中元素的个数。

SS_Print函数从栈底到栈顶打印出所有元素。

希望对您有所帮助!如有其他问题,请继续提问。

/*************************************************************
    date: July 2017
    copyright: Zhu En(祝恩)
    DO NOT distribute this code.
**************************************************************/
//顺序存储的栈 实现文件
/////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include "SeqStack.h"

/*创建一个栈*/
SeqStack* SS_Create(int maxlen)
{
	SeqStack* ss=(SeqStack*)malloc(sizeof(SeqStack));
	ss->data=(T*)malloc(maxlen*sizeof(T));
	ss->top=-1;
	ss->max=maxlen;
	return ss;
}

/*释放一个栈*/
void SS_Free(SeqStack* ss)
{
	free(ss->data);
	free(ss);
}

/*清空一个栈*/
void SS_MakeEmpty(SeqStack* ss)
{
	ss->top=-1;
}

/*判断栈是否为满*/
bool SS_IsFull(SeqStack* ss)
{
	/*请在BEGIN和END之间实现你的代码*/
    /*****BEGIN****/
    if(ss->top==ss->max-1)
    {
        return (false);
    }
    /******END****/
}

/*判断栈是否为空*/
bool SS_IsEmpty(SeqStack* ss)
{
	/*请在BEGIN和END之间实现你的代码*/
    /*****BEGIN****/
    if(ss->top==-1)
    {
        return (false);
    }
    /******END****/
}

/*获取栈元素个数*/
int SS_Length(SeqStack* ss)
{
	/*请在BEGIN和END之间实现你的代码*/
    /*****BEGIN****/
    int i=0;
    while(ss->top != -1)
    {
        i++;
        ss->top--;
    }
    return i;
    /******END****/
}

/*将x进栈,满栈则无法进栈(返回false)*/
bool SS_Push(SeqStack* ss, T x)
{
	/*请在BEGIN和END之间实现你的代码*/
    /*****BEGIN****/

    if (ss->top == ss->max - 1) 
    {
        return false; 
    }
    else 
    {
        ss->top++;
        ss->data[ss->top] = x;
        return true;
    }
    /******END****/
}

/*出栈,出栈的元素放入item,空栈则返回false*/
bool SS_Pop(SeqStack* ss, T &item)
{
	/*请在BEGIN和END之间实现你的代码*/
    /*****BEGIN****/
    if(ss->top==-1)
    {
        return (false);
    }
    else
    {
        item=ss->data[ss->top];
        ss->top--;
        return true;
    }
    /******END****/
}

/*获取栈顶元素放入item中,空栈则返回false*/
bool SS_Top(SeqStack* ss, T & item)
{
	if (SS_IsEmpty(ss)) {
		return false;
	}
	item = ss->data[ss->top];
	return true;
}

/*从栈底到栈顶打印出所有元素*/
void SS_Print(SeqStack* ss)
{
	if (SS_IsEmpty(ss)) {
		printf('stack data: Empty!\n');
		return;
	}
	printf('stack data (from bottom to top):');
	int curr=0;
	while(curr<=ss->top) {
		printf(' %d', ss->data[curr]);
		curr++;
	}
	//printf('\n');
}
顺序存储的栈实现文件 - C语言代码示例

原文地址: https://www.cveoy.top/t/topic/b9Ch 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录