C语言栈的基本实现

本文详细介绍了栈的定义和特点,包括顺序栈(数组型和线性表型)以及链式栈的实现。通过代码示例展示了push、pop操作,探讨了顺序栈在动态变化时可能存在的空间问题以及链式栈在空间利用率上的优势。
摘要由CSDN通过智能技术生成

1.栈的定义和特点

(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈(push)、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈(pop),它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

2.顺序栈(数组型)的实现

首先我们定义一个全局的整型数组,基于此数组来进行栈的相关操作。直接上清晰简单的代码。
预处理:

#include<stdio.h>
int A[MAX_SIZE];//创建一个全局的整型数组 
#define MAX_SIZE 101//宏定义数组的大小 101 
int top=-1;//空栈,虚构索引-1 

push操作:

void Push(int x){
   
	if(top==MAX_SIZE -1){
   
		printf("Error:stack overflow\n");
		return ;
	}
	// top ++;
	//A[top]=x; 
	A[++top]=x;//自增发生在赋值之前 
}

pop操作:

void Pop(){
   
	if (top==-1){
   
		printf("Error:No element to pop\n");
		return;
	}
	top--;
}
int Top(){
   
	return A[top];//直接返回top索引处的值。 
}

最后我们写一个print函数和主函数来测试一下。

void Print(){
   
	int i;
	printf("Stack: ");
	for
  • 15
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值