新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
栈是一种具有从宏观上来看是“先进后出”功能特点的数据结构。可以由数组或者链表来实现。
公司主营业务:成都网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出曲水免费做网站回馈大家。
其实现原理是从“一端”操作,导致先存储的数据最后被取出。有栈顶、栈底等因素组成。在《C语言,好爽》第7版(2017年)第76集:栈的代码实现之数组方案,中对栈的内存实现原理进行了详解。这里只从宏观上来理解,以及相关代码如何实现。
其结构体类型为:
#define N 30
struct _stack
{
int top;
int data[N];
};
typedef struct _stack mystack;
对栈的操作通常有初始化、判断栈空、栈满,入栈,操作,清空等操作。这里分别实现:
调用代码:
int main() {
mystack ms;
init(&ms);
int flag = 0;
int value = 0;
value = 0;
flag = push(&ms, value);
if (flag)
{
printf("%d 入栈成功", value);
}
else
{
printf("%d 入栈失败", value);
}
value = 1;
flag = push(&ms, value);
if (flag)
{
printf("%d 入栈成功", value);
}
else
{
printf("%d 入栈失败", value);
}
value = 2;
flag = push(&ms, value);
if (flag)
{
printf("%d 入栈成功", value);
}
else
{
printf("%d 入栈失败", value);
}
show(&ms);
//弹出栈
int output_value = 0;
int output_flag = 0;
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出栈成功,出栈的数据为:%d", output_value);
}
else
{
printf("出栈失败");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出栈成功,出栈的数据为:%d", output_value);
}
else
{
printf("出栈失败");
}
output_flag = pop(&ms, &output_value);
if (output_flag)
{
printf("出栈成功,出栈的数据为:%d", output_value);
}
else
{
printf("出栈失败");
}
show(&ms);
system("pause");
return 0;
}
测试结果: