顺序存储的栈实现文件 - C语言代码示例
这是一个顺序存储的栈的实现文件,包括了栈的创建、释放、清空等功能。
其中,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');
}
原文地址: https://www.cveoy.top/t/topic/b9Ch 著作权归作者所有。请勿转载和采集!