C语言栈实现

兄弟们,今日头条搜索三线城市程序员老陈关注我,我将持续不断推出视频教程。

一,简介

栈是一种先进后出的容器,本篇实现一个入栈、出栈、显示站内元素的例子。

二,代码

//栈是后进先出的一种数据容器
#include<stdio.h>
#define STACK_LENGTH 5

//定义结构体保存栈信息,注意栈元素只能是非负整数(-1用于表示栈内无元素)
struct Stack
{
	//栈元素
	int element[STACK_LENGTH];
	//栈顶位置 top==0表示元素为空 top==x表示有x元素且元素位置在element[x-1]处
	int top;
};

//展示栈内所有元素,从栈顶到栈底的顺序展示即可
void PrintStack(struct Stack *p)
{
	int i;
	printf("==================栈元素如下\n");
	for(i=p->top;i>0;i--)
	{
		printf("%d ",p->element[i-1]);
	}
	printf("==================\n");
}

//入栈
int StackIn(struct Stack *p,int num)
{
	if(p->top>STACK_LENGTH-1)//栈满了
		return -1;
	p->element[p->top]=num;
	p->top++;
	return 0;
}

//出栈,以返回值的形式提供出栈元素的值
int StackOut(struct Stack *p)
{
	int topNum;
	if(p->top<=0)//空栈
		return -1;
	//取栈顶元素
	topNum=p->element[p->top-1];
	//栈顶元素出栈
	p->top--;
	return topNum;
}

//入口
int main()
{
	//初始化
	struct Stack stack;
	stack.top=0;
	PrintStack(&stack);

	//入栈
	StackIn(&stack,1);
	StackIn(&stack,2);
	StackIn(&stack,3);
	StackIn(&stack,7);
	StackIn(&stack,8);
	StackIn(&stack,9);
	//输出
	PrintStack(&stack);

	//出栈
	printf("OUT:%d\n",StackOut(&stack));
	printf("OUT:%d\n",StackOut(&stack));
	printf("OUT:%d\n",StackOut(&stack));	
	PrintStack(&stack);
	printf("OUT:%d\n",StackOut(&stack));
	printf("OUT:%d\n",StackOut(&stack));
	printf("OUT:%d\n",StackOut(&stack));
	PrintStack(&stack);
	return 1;
}

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页